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