【问题标题】:SAS-merge one to manySAS-一对多合并
【发布时间】: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;

【问题讨论】:

    标签: merge sas


    【解决方案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 函数。如果集合中有另一个键可以用作连接变量,我会使用它。

    【讨论】:

      猜你喜欢
      • 2017-05-23
      • 1970-01-01
      • 2021-07-16
      • 2017-03-26
      • 2016-09-07
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多