【问题标题】:Proc SQL not joining properlyProc SQL 未正确加入
【发布时间】:2022-01-07 23:23:45
【问题描述】:

这是我的代码:

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

want 是一个表,每个 ID 包含许多行和日期,want3 是一个表,每个 ID 只有一行和日期。

Want 看起来像:

Date       | ID | Company | Click 
-----------+----+---------+--------
01/01/2021 | 01 | Us      | 1
01/01/2021 | 01 | Us      | 1
01/01/2021 | 01 | Other   | 1
02/01/2021 | 01 | Us      | 0 
02/01/2021 | 01 | Other   | 0
02/01/2021 | 02 | Us      | 1 
03/01/2021 | 02 | Us      | 1 
03/01/2021 | 02 | Us      | 0

want3 看起来像:

MinDate    | ID 
-----------+----
01/01/2021 | 01 
02/01/2021 | 02 

我想要做的是匹配两个表,因此每个 ID 只显示第一个日期行。该日期是want3 中的日期。结果应如下所示:

Date       | ID | Company | Click 
-----------+----+---------+--------
01/01/2021 | 01 | Us      | 1
01/01/2021 | 01 | Us      | 1
01/01/2021 | 01 | Other   | 1
02/01/2021 | 02 | Us      | 1 

由于某种原因,当我运行此连接时,结果看起来像 want,即每个 ID 仍然有很多行和日期。

【问题讨论】:

  • 试试inner join

标签: sql proc-sql


【解决方案1】:

你尝试过内部连接


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;

【讨论】:

  • 成功了!有趣的是,有时您如何寻找复杂的方法来解决某些问题,而解决方案就在您面前。谢谢!
猜你喜欢
  • 2017-05-07
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多