SQL左边连接逻辑在SAS Merge或Data步骤中

时间:2013-07-27 18:15:53

标签: sas

我有两个数据集,需要第三个数据集作为输出。

ONE                TWO  
----------         ----------
ID FLAG            NUMB  
1  N               2  
2  Y               3  
3  Y               9  
4  N               2  
5  N               3  
9  Y               9  
10 Y

OUTPUT  
------- 
ID FLAG NEW  
1  N    N  
2  Y    Y   
3  Y    Y  
4  N    N  
5  N    N  
9  Y    Y  
10 Y    N  

如果在TWO.NUMB中找到ONE.ID并且它是ONE.FLAG = Y则新变量NEW = Y 否则NEW = N

我能够使用PROC SQL执行此操作,如下所示。

proc sql;  
create table output as
(
   select distinct id, flag, case when numb is null then 'N' else 'Y' end as NEW
   from one
   left join
   two
   on id = numb
   and flag = 'Y'
);
quit;

这可以在DATA step / MERGE中完成吗?

1 个答案:

答案 0 :(得分:0)

因为你有一个sql步骤尝试,所以这是

的改进

- 此sql步骤不需要合并 -

proc sql noprint;

    create table output as
    select distinct *, case
                            when id in (select distinct numb from two) then "Y"
                            else "N"
                        end as new
    from one
    ;
quit;