SQL左JOIN与Werra Sas Enterprise指南

发布于 2025-02-09 22:04:06 字数 549 浏览 1 评论 0原文

我试图在其ID字段上配对2个表(昵称为Persip和ecif)(标记为Table1& Table2)来创建一个可效果,其中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行。

I am trying to pair 2 tables (nicknamed PERSIP and ECIF) on their ID field, (labeled TABLE1 & TABLE2) to create a RESULTTABLE, where the ym_id (for both tables) variable is set to my timekey0 variable for a specific datetime.

I am wondering why this code produces 0 rows of resulting data. After looking online, this was the format people posted as solutions to similar problems.

%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;

I got a result of 0 rows with many columns. Not sure if my join type is incorrect but I have 0 rows in the table.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

音盲 2025-02-16 22:04:06

造成这种情况的原因可能有两个:

  1. 与您的标准(ecif.ym_id =& timeKey0)没有匹配的记录。
    =& timeKey0。
  2. and persip.ym_id

There may be two reasons for this:

  1. There is no records matching to your where criteria (ECIF.ym_id = &timekey0.
    AND PERSIP.ym_id = &timekey0.)
  2. There is no records to join matching your on criteria (ON PERSIP.ID = ECIF.ID)
坦然微笑 2025-02-16 22:04:06

您的逻辑似乎消失了。您说您想要一个左联接,然后在您的条件下使用“右”表中的变量。

您很可能只想将这些条件添加到状态。

FROM TABLE1 PERSIP
LEFT JOIN TABLE2 ECIF
  ON PERSIP.ID = ECIF.ID 
  AND ECIF.ym_id = &timekey0.
  AND PERSIP.ym_id = &timekey0.

或者也许只是保持条件,以限制从“左”表中读取的观察结果

FROM TABLE1 PERSIP
LEFT JOIN TABLE2 ECIF
  ON PERSIP.ID = ECIF.ID 
  AND PERSIP.ym_id = ECIF.ym_id 
WHERE PERSIP.ym_id = &timekey0.

Your logic seems off. You say you want a LEFT JOIN then use a variable from the "RIGHT" table in your WHERE condition.

Most likely you just want to add those conditions to the ON condition.

FROM TABLE1 PERSIP
LEFT JOIN TABLE2 ECIF
  ON PERSIP.ID = ECIF.ID 
  AND ECIF.ym_id = &timekey0.
  AND PERSIP.ym_id = &timekey0.

Or perhaps just keep the condition that will limit the observations read from the "LEFT" table in the WHERE condition

FROM TABLE1 PERSIP
LEFT JOIN TABLE2 ECIF
  ON PERSIP.ID = ECIF.ID 
  AND PERSIP.ym_id = ECIF.ym_id 
WHERE PERSIP.ym_id = &timekey0.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文