横結合時に両方のデータセットの全てのレコードを残す方法を紹介。
サンプルデータ
data DT1; A=1; B="AA"; output; A=2; B="BB"; output; run; data DT2; A=2; C=10; output; A=3; C=20; output; run;
DT2
|
FULL JOIN
proc sql; create table DT3 as select coalesce( DT1.A, DT2.A ) as A , B , C from DT1 full join DT2 on DT1.A = DT2.A ; quit;
基本構文 from データセット1 full join データセット2 on 結合条件 解説 ① 結合時、2つのデータセットの全てのレコードを残します。 (結合条件に合うレコードだけでなく、片方のデータセットにしかないレコードも残す) ② 結合する2つのデータセットで同じ変数名を持っている場合、「データセット名.変数名」と書きます。 (今回の例では、DT1とDT2で同じ変数名Aを持っているので、どっちのAを使うのか明確にするため、「DT1.A」とか「DT2.A」と書いています) ③ SELECTでcoalesceという関数を使ってます。 この関数は、指定した引数の値を順番に見ていって、最初の非欠損値の値を返します。 つまりSELECTの「coalesce( DT1.A, DT2.A )」は、 ・DT1にしか存在しないレコードだったら、DT1.Aの値を持ってくる ・DT2にしか存在しないレコードだったら、DT2.Aの値を持ってくる という事をやっています。 |
0 件のコメント:
コメントを投稿