使用SQL在SAS中连接两个表

时间:2016-02-15 18:05:02

标签: sql join sas

我试图加入两个表table1和table2。与其他变量一起,两个表都有两个变量,COMPANY和DATE,它们的组合唯一地标识给定表中的每个观察。我想加入COMPANY上的两个表和一个名为DATEDIF的变量,这是在table1中找到的DATE变量和表2中找到的DATE变量的绝对差异。如果我在COMPANY上找到匹配,我只想如果DATEDIF小于100,请保持匹配。我想保留table1中的每个观察,无论我是否找到匹配,所以我正在进行左连接。这是我的代码:

proc sql; create table mergedtable as select
a.*, b.*, abs(a.date-b.date) as datedif
from table1 a left join table2 b
on.company=b.company
group by a.company, a.date
having datedif<100;
quit;

问题是,当我这样做时,mergedtable只有2229个观察值,即使table1有2705个观察值。由于我在table1上进行了左连接,我认为mergedtable应至少有2705个观察值,如果来自table2的多个观察值满足上面详述的匹配标准,则可能更多。

我哪里错了?

1 个答案:

答案 0 :(得分:1)

我认为这就是你想要的:

proc sql;
    create table mergedtable as
        select a.*, b.*, abs(a.date-b.date) as datedif
        from table1 a left join
             table2 b
             on.company = b.company and abs(a.date-b.date) < 100
        group by a.company, a.date;

不建议将*group by一起使用。