You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Proc SQL左连接未正确筛选各ID对应最早日期行问题排查

问题原因
  • 你当前使用的是LEFT JOIN(左连接),左连接的核心规则是完整保留左表(即你的want表)的所有记录,仅会对右表做匹配:匹配成功时右表字段返回对应值,匹配失败时右表字段返回空值。
  • 你的查询语句仅选取左表的所有字段a.*,没有添加任何过滤条件,所以最终输出和原want表完全一致,没有实现筛选效果。
正确实现方案

有两种常用写法可以达到你的预期:

方案1:左连接基础上增加过滤条件

添加WHERE子句筛选出匹配成功的行:

proc sql;
create table firstjoin as
select a.*
from want a
left join want3 b
on a.date=b.mindate and a.id=b.id
where b.id is not null; /* 仅保留匹配成功的行 */
quit;

方案2:改用INNER JOIN(内连接,更推荐)

内连接本身就只会保留左右两张表匹配成功的行,不需要额外加过滤条件,逻辑更简洁:

proc sql;
create table firstjoin as
select a.*
from want a
inner join want3 b
on a.date=b.mindate and a.id=b.id;
quit;

内容的提问来源于stack exchange,提问作者amestrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:45:05