我尝试使用以下代码组合两个数据集。这是一对多的组合情况。我希望达到如图所示的最终结果。然而,它继续失败。有人可以帮助我吗?
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;
答案 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函数。如果您在集合中有另一个可用作连接变量的键,我会改用它。