2016年10月31日月曜日

FedSQLプロシジャでUSING句が使える!



FedSQLで、以下2つのデータセットを結合する例を見てみましょう。


サンプルデータ作成
data DT1;
input ID ID2 A$ @@;
cards;
1 1 aa 1 2 bb 2 1 cc
;
run;
  ID  
  ID2 
  1    1  aa   
  1    2  bb   
  2    1  cc

data DT2;
input ID ID2 B$ @@;
cards;
1 1 ww 1 2 xx 2 1 yy 2 2 zz
;
run;
  ID  
  ID2 
B
  1    1  ww  
  1    2  xx   
  2    1  yy
  2    2  zz


通常のFedSQLプロシジャによる結合
proc fedsql ;
   select coalesce(DT1.ID, DT2.ID) as ID,
             coalesce(DT1.ID2, DT2.ID2) as ID2,
             A,
             B
   from DT1 inner join DT2 on DT1.ID=DT2.ID and DT1.ID2=DT2.ID2;
quit;
  ID  
  ID2 
  1    1  aa     ww  
  1    2  bb     xx  
  2    1  cc  yy


上で書いたプログラムは、FedSQLで利用可能になったUSING句も組み合わせると大分スッキリとしたプログラムになります。


USING句を使う
proc fedsql;
   select *
   from DT1 inner join DT2
   using ( ID, ID2 );
quit;

上の例では、「DT1とDT2で共通する変数ID, ID2で内部結合するよ」っていう意味になります。
ちなみにDS2プロシジャでもUSING句使えますよ。

うーん、個人的にSQLプロシジャでも欲しい機能No1です。

0 件のコメント:

コメントを投稿