今回も複数テーブルの結合について解説します。
前回の記事、【SAS】SQLにおける複数テーブルの結合 その1【UNION ALL】 | ビジネスイッチ (how-to-business.com)の続きとなります。
/* inner join_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 inner join data2 on data1.Id1 = data2.Id1;
quit;
- 名前が全く同じ列は表示されない。
/* data1,data2_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;
Id4=1111; Id5=1111; Id6=1111;
output;
Id4=2222; Id5=2222; Id6=2222;
output;
Id4=3333; Id5=3333; Id6=3333;
output;
run;
proc sql;
create table data3 AS
select * from data1,data2;
quit;
- from句に複数テーブルあるときは、結合されてデカルト積になる。
/* inner join_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;
Id4=1111; Id5=1111; Id6=1111;
output;
Id4=2222; Id5=2222; Id6=2222;
output;
Id4=3333; Id5=3333; Id6=3333;
output;
run;
proc sql;
create table data3 AS
select * from data1 inner join data2 on data1.Id1 = data2.Id4;
quit;
- data1.Id1 = data2.Id4で一致したレコードを結合する。