トップページに戻る
   次のSQLパズルへ
   前のSQLパズルへ
7-48  Nullの行を追加
SQLパズル
Masterテーブル
Code    Name
----    ----
1111    あ
2222    い
3333    う
Masterテーブルを、
1行ごとに、Nullの行を追加して出力する。
出力結果
CodeList  NameList
--------  --------
null      null
1111      あ
null      null
2222      い
null      null
3333      う
null      null
データ作成スクリプト
create table Master(
Code char(4),
Name char(2));
insert into Master values('1111','あ');
insert into Master values('2222','い');
insert into Master values('3333','う');
commit;
SQL
col CodeList for a8
col NameList for a8
--■■■クロス集計を使う方法■■■
select decode(grouping(Name),1,null,Code) as CodeList,Name as NameList
  from Master
 group by rollup(Code,Name)
order by
case when 1= all(grouping(Code),grouping(Name))
     then 0 else 1 end,
Code,Name;
--■■■unionを使う方法■■■
select case when Name is not null
            then Code
       end as CodeList,
Name as NameList
from (select Code,Name from Master
      union all
      select Code,null from Master)
order by Code,Name;
解説
クロス集計を使って、Nullの行を追加する方法や、
unionを使う方法があります。