今回は複数テーブルの結合について解説します。
/* 複数テーブルの結合_1 */
data data1;
Id1=1111; Id2=1111; Id3=1111;
output;
Id1=2222; Id2=2222; Id3=2222;
output;
Id1=3333; Id2=3333; Id3=3333;
output;
run;
data data2;
Id1=1111; Id2=1111; Id3=1111;
output;
Id1=2222; Id2=2222; Id3=2222;
output;
Id1=3333; Id2=3333; Id3=3333;
output;
run;
proc sql;
create table data3 AS
select * from data1
UNION ALL
select * from data2;
quit;



- UNION ALLによって検索結果を縦に結合することができる。
- 重複が有っても全て出力される。
/* 複数テーブルの結合_2 */
data data1;
Id1=1111; Id2=1111; Id3=1111;
output;
Id1=2222; Id2=2222; Id3=2222;
output;
Id1=3333; Id2=3333; Id3=3333;
output;
run;
data data2;
Id1=1111; Id2=1111; Id3=1111;
output;
Id1=2222; Id2=2222; Id3=2222;
output;
Id1=3333; Id2=3333; Id3=3333;
output;
run;
proc sql;
create table data3 AS
select * from data1,data2;
quit;




- from句に複数テーブルあるときは、結合されてデカルト積になる。
- 名前が全く同じ列は表示されない。
[メモ:デカルト積の図解を追記]
/* 複数テーブルの結合_3 */
data data1;
Id1=1111; Id2=1111; Id3=1111;
output;
Id1=2222; Id2=2222; Id3=2222;
output;
Id1=3333; Id2=3333; Id3=3333;
output;
run;
data data2;
Id1=1111; Id2=1111; Id3=1111;
output;
Id1=2222; Id2=2222; Id3=2222;
output;
Id1=3333; Id2=3333; Id3=3333;
output;
run;
proc sql;
create table data3 AS
select t1.Id1,
t1.Id2,
t1.Id3,
t2.Id1,
t2.Id2,
t2.Id3
from data1 t1,data2 t2;
quit;




- from句に複数テーブルあるときは、結合されてデカルト積になる。
- 名前が全く同じ列は表示されない。
[メモ:デカルト積の図解を追記]