トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-228 Outer Unionのような完全外部結合
SQLパズル
Table1 Table2
ID LastName ID Val
---- -------- ---- ---
1111 Smith 1111 200
2222 Maria 2222 300
3333 Victo 3333 400
以下のOuter Unionのような結果を出力する。
出力結果
ID LastName Val
---- -------- ----
1111 Smith null
2222 Maria null
3333 Victo null
1111 null 200
2222 null 300
3333 null 400
データ作成スクリプト
create table Table1(ID,LastName) as
select 1111,'Smith' from dual union
select 2222,'Maria' from dual union
select 3333,'Victo' from dual;
create table Table2(ID,Val) as
select 1111,200 from dual union
select 2222,300 from dual union
select 3333,400 from dual;
SQL
--■■■完全外部結合を使う方法■■■
select nvl(a.ID,b.ID) as ID,a.LastName,b.Val
from Table1 a full join Table2 b
on 1=0
order by a.ID,b.ID;
--■■■union allを使う方法■■■
select ID,LastName,to_number(null) as Val from Table1
union all
select ID,to_char(null),Val from Table2;
解説