Proc SQL 连接两个表并且不接收 NULL

问题描述 投票:0回答:1

我有一个 SAS 表,我正在将其与 SQL Server 表中的单个列连接起来。目标是在匹配时从 SQL Server 添加列,或者在不匹配时返回 NULL。但是最终表中没有 NULL。

这是代码:

create table Final as
Select a.*,
     b.group
From a
Left Join b on a.id=b.id
where datepart(a.date) between b.start and b.end
     and b.void=0
     and b.current=1
     and b.deleted=0;

即使 a.id 不等于 b.id,我也希望填充行并且 b.group 为空。与起始表相比,最终表中缺少 10,000 行,并且 b.group 中没有空值。

join sas proc-sql
1个回答
0
投票

根据定义,具有 B.GROUP 缺失值的观测值也将具有 B.VOID 缺失值,并且 WHERE 子句中的其他变量将被消除。

将 WHERE 更改为 AND,以便额外条件成为连接条件而不是过滤条件的一部分。

create table Final as
select a.*
     , b.group
from a left join b
  on a.id=b.id
  and datepart(a.date) between b.start and b.end
  and b.void=0
  and b.current=1
  and b.deleted=0) b
;
© www.soinside.com 2019 - 2024. All rights reserved.