使用表/关联错误在SAS SQL中连接两个集合

时间:2017-08-04 08:08:39

标签: sas

我正在尝试加入两个数据集。第一个数据集1有两列item和price。第二个数据集2有三列 - item,customerid和qty。我只需要包含dataset1中不在dataset2中的唯一行。在尝试实现此代码时,我收到错误:

错误:未解析对表/相关名的引用i。

我不确定如何修复此错误,谢谢。

PROC SQL;

create table a as

select *
    from dataset1 as i

except corr

select *
    from dataset2 as p 

where i.item = p.item;

describe table a;

QUIT;

1 个答案:

答案 0 :(得分:0)

EXCEPT用于选择第一组中第二组中不存在的记录。因此,如果你想要的是,引用你,从dataset1中选择<{1}}中没有出现的记录,你就不需要dataset2子句:

where

但是,如果PROC SQL; create table a as select * from dataset1 as i except corr select * from dataset2 as p ; QUIT; 子句建议,您实际上想要从where中选择dataset1中找不到item的值的记录,您可以这样做

dataset2

编辑:关注您的最新评论,如果您 reaaaally 需要您的查询以proc sql; select * from dataset1 i where not exists (select * from dataset2 p where i.item=p.item ) ; quit; 为特色,那么这可以为您提供结果

except

即使这将与上面的查询(使用proc sql; create table a as select t1.* from dataset1 t1 inner join (select * from dataset1 as i except corr select * from dataset2 as p ) t2 on t1.item=t2.item ; quit; )相同,或者,现在我想到它(愚蠢的我),因为:

not exists