【发布时间】:2016-12-03 03:24:13
【问题描述】:
我尝试使用以下代码来组合两个数据集。这是一对多的组合情况。我想达到如图所示的最终结果。然而,它仍然失败了。有没有一个可以帮助我
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;
【问题讨论】:
我尝试使用以下代码来组合两个数据集。这是一对多的组合情况。我想达到如图所示的最终结果。然而,它仍然失败了。有没有一个可以帮助我
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;
【问题讨论】:
涉及日期时间值的联接可能会出现问题。尽管您看到了,但两组中的 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 函数。如果集合中有另一个键可以用作连接变量,我会使用它。
【讨论】: