【问题标题】:Self join query using SQL - demo query attached使用 SQL 的自联接查询 - 附加了演示查询
【发布时间】:2018-10-13 16:40:06
【问题描述】:

我有一个场景,我需要我的查询根据代码值提取数据。

示例:表 #temp1 包含人员 ID、程序分配和数据集的组合。对于任何人'1001',我想在类似代码'PS'下提取第一个程序的录取日期和最后一个程序的出院日期和数据集。

所以,我想要的输出是:

演示代码:

https://rextester.com/ADDL95491

有什么帮助吗?!

【问题讨论】:

  • 哪个字段为每个 CID 定义最后一个或第一个?我的意思是在哪一列上,必须对行进行排序以获得第一个和最后一个?
  • 程序+代码组合

标签: sql sql-server


【解决方案1】:

在我看来您需要以下查询

with cte1 as
      (select cid,code,admissiondate,dischargedate,program 
        from #temp1 t1 where
       t1.row_number =  (select min(row_number) from #temp1)
      ) , cte2 as
      (select * from  #temp1 where dataset is not null
      )
      select cte1.cid,cte1.code,cte1.admissiondate,
      cte2.dischargedate,cte2.dataset  
      from cte1 left join cte2 on cte1.code=cte2.code

https://rextester.com/BNVK71028

    cid    code admissiondate   dischargedate   dataset
1   1001    PR  01/01/2011      5/1/2011       discharge data
2   1001    PS  06/01/2011      7/1/2011       discharge data
3   1001    PQ  08/01/2011  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多