[英]SQL Left Join with WHERE clause SAS Enterprise Guide
我试图在它们的 ID 字段(标记为 TABLE1 和 TABLE2)上配对 2 个表(昵称 PERSIP 和 ECIF)以创建一个 RESULTTABLE,其中 ym_id(对于两个表)变量设置为特定日期时间的 timekey0 变量。
我想知道为什么这段代码会产生 0 行结果数据。 在网上看了之后,这是人们发布的解决类似问题的格式。
%let timekey0 = 202110;
proc sql;
CREATE TABLE RESULTTABLE AS
SELECT
PERSIP.col1,
PERSIP.col2,
PERSIP.col3,
ECIF.col1,
ECIF.col2,
ECIF.col3,
ECIF.col4
FROM DB.TABLE1 PERSIP
LEFT JOIN DB.TABLE2 ECIF
ON PERSIP.ID = ECIF.ID
WHERE ECIF.ym_id = &timekey0.
AND PERSIP.ym_id = &timekey0.;
quit;
我得到了 0 行有很多列的结果。 不确定我的连接类型是否不正确,但表中有 0 行。
这可能有两个原因:
你的逻辑似乎不对。 您说您想要 LEFT JOIN,然后在 WHERE 条件中使用“RIGHT”表中的变量。
您很可能只想将这些条件添加到 ON 条件中。
FROM TABLE1 PERSIP
LEFT JOIN TABLE2 ECIF
ON PERSIP.ID = ECIF.ID
AND ECIF.ym_id = &timekey0.
AND PERSIP.ym_id = &timekey0.
或者也许只是保留限制从 WHERE 条件中的“LEFT”表读取的观察结果的条件
FROM TABLE1 PERSIP
LEFT JOIN TABLE2 ECIF
ON PERSIP.ID = ECIF.ID
AND PERSIP.ym_id = ECIF.ym_id
WHERE PERSIP.ym_id = &timekey0.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.