我试图加入两个表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的多个观察值满足上面详述的匹配标准,则可能更多。
我哪里错了?
答案 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
一起使用。