根据滞后日期加入表格

时间:2013-05-20 14:38:23

标签: sql sas

我需要执行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;

2 个答案:

答案 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的确切语法。