【问题标题】:Pivot Based on Two columns from a table [duplicate]基于表中的两列的数据透视[重复]
【发布时间】:2020-01-05 14:16:54
【问题描述】:

我有一张这样的桌子

PCode      Milestone      DeliveryDate       Status
------------------------------------------------------
P1234        Start             14/5/2019     Complete
P1234        End               17/6/2019     Complete
P2345        Start              8/6/2019      Progress
P2345        End                19/6/2019     Progress
P7335        Start              18/8/2019     Provisional
P7335        End                19/9/2019     Provisional
-----------------------------------------------------------

根据上面的数据我需要得到一个这样的表

PCode     Start          End        Status
---------------------------------------------
P1234     14/05/2019    17/06/2019   Completed
P2345     8/6/2019      19/06/2019   Progress
P7335     18/08/2019   19/09/2019    Provisional
----------------------------------------------

我不知道如何使用一些 PIVOT 来实现这一点

【问题讨论】:

  • 对于给定的一对记录,Status 文件是否有可能不一致,如果是这样,选择要报告的两个值中的哪一个的逻辑是什么?
  • 对我来说看起来像是条件聚合。到目前为止,尝试过什么来解决这个问题?
  • @TimBiegeleisen 这没有转换成行,因为我们没有制作具有不同开始和结束日期的列。它针对具有开始值和结束值的所有行创建一列。

标签: tsql sql-server-2012


【解决方案1】:

一个简单的条件聚合就可以解决问题

这假设[Status]PCode 记录中是一致的

Selet PCode
     ,[Start]  = min(case when Milestone='Start' then DeliveryDate end)
     ,[Ebd]    = max(case when Milestone='End'   then DeliveryDate end)
     ,[Status] = max([Status])
 From  YourTable
 Group By PCode

编辑 - 查找开始和结束状态

Select PCode
     ,[Start]       = min(case when Milestone='Start' then DeliveryDate end)
     ,[End]         = max(case when Milestone='End'   then DeliveryDate end)
     ,[StatusStart] = min(case when Milestone='Start' then [Status] end)
     ,[StatusEnd]   = min(case when Milestone='End'   then [Status] end)
 From   YourTable
 Group By PCode

【讨论】:

  • 完美!抱歉,我从来没有想过那种好方法......干杯!
  • @SandeepThomas 总是乐于提供帮助
  • 如果它回答了这个问题,@SandeepThomas,请考虑将其标记为解决方案。
  • @SandeepThomas 查看更新的答案
  • @JohnCappelletti 非常感谢.. 你是救生员!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-17
  • 2021-11-25
  • 2019-01-03
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多