分析哥 发表于 2016-12-14 02:01
proc sql;
create table card_ as
select a.*,b.var1,b.var2```b.var8
好。
谢谢分析哥通宵达旦的给出指教。
input这段如果加as a.id/b.id确实会报错,
不加就不会报错,
但不知这样是否规范?
有哪位老师回答一下。
***这段运行正常;
把where直接放在card2后面(本来where 就是对card2进行筛选的) 匹配的数据才是真正想要的数据;
如果先配对再where话得到的是另一个目标的数据集;
where究竟放在哪个位置依据目的而定;
proc sql;
create table card_ as
select a.*,
b.var1,
b.var53,
b.var54,
b.var57,
b.var58,
b.var59,
b.var60,
b.var61
from card1 as a
left join card2 as b
on input(compress(a.card_id,"‘’"),$40.) = (input(compress(b.var1,"‘’"),$40.))
where b.var27 is not missing
;
quit;
proc sql;
create table card_ as
select a.*,
b.var1,
b.var53,
b.var54,
b.var57,
b.var58,
b.var59,
b.var60,
b.var61
from card1 as a
left join card2(where=(var27 is not missing)) as b
on input(compress(a.card_id,"‘’"),$40.) = (input(compress(b.var1,"‘’"),$40.))
;
quit;