我正在尝试加入两个数据集。第一个数据集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;
答案 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