0

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

2 回答 2

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。

于 2013-05-20T14:53:17.427 回答
0
Select A.Date,A.Var1,B.Var2 From A
left join B On A.Date = B.Date
Where A.Date = ?

如果表 a 中有记录,则给定 Var2 为 null 是可以的,如果不是,则需要内部联接而不是左联接。

刚刚注意到滞后,所以你会使用任何意思而不是 A.Date = B.date,需要了解 DBMS 以获得确切的语法。

于 2013-05-20T14:51:00.980 回答