我有两种方法做同样的事情,但没有得到相同的结果。这是什么原因?合并与Proc sql
第一种方式:
Proc sql;
Create table abc.immu as
select ID, DATE, CODE
from xyz.imm
where DATE between to_date('2008-01-01','YYYY-MM-DD') and to_date('2016-01-31','YYYY-MM-DD')
Order by CODE);
Quit;
Proc sql ;
Create table abc.testb as
select CODE, description from xyz.REF_code where lower(description)like '%hep b%';
Quit;
proc sort data=abc.testb;
by code;
run;
data abc.testb1;
merge abc.immu(in=a) abc.testb (in=b);
by code;
if a=1 and b=1;
run;
方式二
Create table abc.testb1 as
Select ID, DATE,CODE
From xyz.imm
where CODE in (select CODE from xyz.REF_code where lower(description)like '%hep b%')
AND DATE between to_date('2008-01-01','YYYY-MM-DD') and to_date('2016-01-31','YYYY-MM-DD')
Order by ID, DATE;
Quit;
proc sort data=abc.testb1 nodupkey;
by ID DATE;
run;
为什么我没有得到同样的结果?是不是两种不同的方式来实现相同的事情?
相同结果我的意思是观察 – SAW
to_date()在SAS中适合你吗?这不是SAS代码afaik,除非您使用通过,根据您发布的内容,这似乎不会发生。我*认为*如果您在任一表中有重复项,结果可能会有所不同。运行PROC COMPARE来查看结果的不同之处,这将有助于您找出问题的原因。 – Reeza
是使用直通,即使在没有重复键的情况下,观察结果也不相同 – SAW