トップページに戻る    次の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を使う方法があります。