【问题标题】:PROC SQL Query Involving Two Datasets涉及两个数据集的 PROC SQL 查询
【发布时间】:2021-12-01 09:38:42
【问题描述】:

我有两个数据集,它们都描述了球员在不同时间段内参加两个不同足球联赛的时间。有时球员会从一个联赛转移到另一个联赛。我想输出一个数据集,其中包含对联赛 1(数据集 1)的观察结果,其中球员在某个时间点在两个联赛中都打过球,并且球员在联赛 1(数据集 1)的时间结束日期在开始时间之前联赛 2 中的同一名球员(数据集 2)。
以下是数据集的描述:

数据集 1(联赛 1):

Player        Start_Date End_Date
Mark Jones    09/19/2019 09/18/2021 
Phil Lewis    09/07/2019 09/06/2020
Rena Williams 10/15/2018 10/15/2021
Roger Phelps  04/03/2016 05/15/2018
Trevor Knight 06/26/2017 04/20/2020
.             .          .
.             .          .
.             .          .

数据集 2(联赛 2):

Player             Start_Date End_Date
Rhonda Mars        07/28/2017 06/05/2021
Jack Hines         01/02/2019 10/10/2021
Mark Jones         05/07/2015 09/18/2019
Roger Phelps       05/20/2018 10/10/2021
William Henderson  05/07/2017 03/28/2021
.                  .          .
.                  .          .
.                  .          .

期望的输出示例:

Player       Start_Date End_Date    Transferred
Mark Jones    09/19/2019 09/18/2021 
Phil Lewis    09/07/2019 09/06/2020
Rena Williams 10/15/2018 10/15/2021
Roger Phelps  04/03/2016 05/15/2018 X
Trevor Knight 06/26/2017 04/20/2020

这是我编写的示例代码,它只是给出了一个指示列来区分一个球员是否在两个联赛中都打过球:

PROC SQL;
   CREATE TABLE Shared_Players AS SELECT DISTINCT *,
   CASE
      WHEN Player IN (SELECT DISTINCT Player FROM League2) THEN "X" ELSE " " END AS Transferred
   FROM League1;
QUIT;

【问题讨论】:

  • 你有没有尝试加入这两个表?比如名字? (更好的球员ID)。如果可能的话,您可以比较两组中的任何日期。
  • @theking2 你的意思是这样的吗?程序 SQL; CREATE TABLE Dummy AS SELECT * FROM League1 as x LEFT JOIN League2 as y ON x.End_Date
  • 差不多。在 ON x.name = y.name。在 where 子句中进行日期比较。但这也可以继续进行,具体取决于定义的索引。

标签: sql sas proc-sql


【解决方案1】:

试试

proc sql;
  create table onetwo as
  select one.* 
  , case when two.start_date > one.end_date then 'X' else ' ' end as xfer_1_to_2
  from one left join two on one.player = two.player
  ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多