数据步骤合并PROC SQL等效标记在哪个表记录中找到

时间:2014-10-22 07:07:35

标签: sas

我合并了两个数据集如下:

data ds3;
  merge ds1(in=in1) ds2(in=in2);
  by mrgvar;
  if in1;
  if in2 then flag=1;
run;

如果我用PROC SQL步骤代替,那么如何设置“flag”变量如上所述?

proc sql;
  create table ds3 as
  select a.*
        ,b.*
        ,???
  from ds1 as a
       left join
       ds2 as b
       on a.mrgvar=b.mrgvar;
quit;

1 个答案:

答案 0 :(得分:3)

一种常见的方法是将表别名与连接变量一起使用。

proc sql;
  create table ds3 as
  select a.*
        ,b.*
        ,case when b.mrgvar is null then 0 else 1 end as flag
  from ds1 as a
       left join
       ds2 as b
       on a.mrgvar=b.mrgvar;
quit;

这样的效果 - 如果b.mrgvar为null /缺失,那么它只来自表a。 (是的,您可以单独引用这两个,即使它们基本相同并在结果表中合并。)