テーブルとテーブルの連結には、縦方向(行が増える)と横方向(列が増える)の場合があります。
縦方向の場合は__集合__、横方向の場合は__結合__と言います。
集合には以下の3つのパターンがあります。
和集合:複数のテーブルのレコードをすべて足す。
積集合:複数のテーブルの共通するレコードを取り出す。
差集合:他のテーブルと共通しないレコードを取り出す。
今回は前回 (https://qiita.com/MomonekoView/items/78f51b7385bec42d08ed) に引き続き、
和集合について、SAS プログラムと SQL をそれぞれ用いた例を紹介します。
行いたい操作は下記です。
・変数名が共通しているA列を結合。
・変数名が異なるB列とC列については、同じB列として結合。
・B列とC列など、結合される列どうしは同じデータ型である必要があります。
####① SAS プログラム
data table_3;
set table_1 table_2(rename=(C=B));
run;
set ステートメントで縦に重ねます。
この時、 rename ステートメントにより、table_2 のC列の名前をB列に変換します。
####② SQL
create table table_3 as
select A, B from table_1
union all
select A, C from table_2;
SELECT文を union all でつなぐと、列名を最初の SELECT 文のテーブルに合わせて連結されます。
各SELECT文での変数の順番が新しいテーブルの列名に対応し、2つ目のSELECT文の列名が最初のSELECT文の列名へ変更されます。
(この場合、table_2 の C が table_1 の B へ変更される )
ちなみに union のみとすると、下記のように重複するデータはまとめられてから連結されます。
create table table_4 as
select A, B from table_1
union
select A, C from table_2;
####関連記事
データテーブルの連結-縦方向 1(異なる列名をそのまま残す場合)
データテーブルの連結-縦方向 3(積集合と差集合)
データテーブルの連結-横方向 1(完全外部結合)
データテーブルの連結-横方向 2(内部結合)
データテーブルの連結-横方向 3(左右の外部結合)
データテーブルの連結ー交差結合