我需要执行LEFT JOIN以将表B中的变量引入A,方法是将表B中的新变量与表A中的日期滞后日期连接起来:
表A:
Date Var1
1/3/07 1
表B:
Date Var2
1/2/07 2
1/3/07 3
加入表:
Date Var1 Var2
1/3/07 1 2
我需要为数千个日期做这件事。这不起作用:
proc sql;
create table data.Join as
select a.*, b.Var2
from data.A a left join data.B b
on a.Date=b.Date
where a.Date=lag(b.Date,1);
quit;
答案 0 :(得分:2)
您可能正在使用SAS proc SQL。在此,您可以对日期进行常规算术,因此- 1
表示减去一天。你可以试试这个:
Select A.Date, A.Var1, B.Var2
From A left outer join
B
On A.Date = B.Date + 1
如果没有匹配,那么left outer join
将保留该行并为第三列插入NULL。
答案 1 :(得分:0)
Select A.Date,A.Var1,B.Var2 From A
left join B On A.Date = B.Date
Where A.Date = ?
如果表中的记录是正确的,则给定Var2为null,如果不是,则需要内连接而不是左连接。
注意滞后而不是A.Date = B.date,你会使用任何意思,需要知道DBMS的确切语法。