SAS合并一对多

时间:2016-12-03 03:24:13

标签: merge sas

我尝试使用以下代码组合两个数据集。这是一对多的组合情况。我希望达到如图所示的最终结果。然而,它继续失败。有人可以帮助我吗? enter image description here

proc sql; 
create table temp2.ddfull as 
select a.*, b.*
from temp2.ddoption as a left join temp2.ddunderprice as b
on a.tt=b.tt;
quit;

1 个答案:

答案 0 :(得分:1)

涉及日期时间值的联接可能会有问题。尽管你看到了,但两组中的TT值可能不相等,因为日期时间值可能具有亚秒级分辨率(并且使用DATETIME格式,它们可能会以一定程度的舍入方式呈现)。

这可能会导致两个不同的值与应用的格式相同,而实际上它们不是。这也会阻止内部连接条件,并导致Open_Bid在左连接中丢失。

你能看到以下是否有效吗?

proc sql; 
  create table temp2.ddfull as 
    select a.*, b.*
    from temp2.ddoption as a left join temp2.ddunderprice as b
    on put(a.tt, datetime16.)=put(b.tt, datetime16.);
quit;

这会影响性能,因为每次比较都必须调用两个PUT函数。如果您在集合中有另一个可用作连接变量的键,我会改用它。