【问题标题】:Pivot, Unpivot, Cross Apply?枢轴,反枢轴,交叉应用?
【发布时间】:2015-04-28 14:56:44
【问题描述】:

假设我有如下数据,我真正想要的是(枢轴?)AssigedType 作为列(处理、监督等),尽管我不认为枢轴是正确的方法,因为我不是聚合任何东西。将涉及三个表:Matters、MattersProfessionals、Professionals),即

Matters.Matters = MattersProfessionals.Matters Professionals.Professionals = Matters.Professionals

matterid    AssignedType    ProfName
27391-0001001   Handling    Skip A. Lawyer
37085-0051001   Handling    Skip A. Lawyer
37085-0051001   Supervising Skip A. Lawyer
18814-0226WO1   Handling    Skip A. Lawyer
37085-0050001   Handling    Skip A. Lawyer
37085-0050001   Supervising Skip A. Lawyer
37085-0053001   Supervising Skip A. Lawyer
37085-0053001   Handling    Skip A. Lawyer
37085-0052001   Handling    Skip A. Lawyer
37085-0052001   Supervising Skip A. Lawyer
18814-0226AU1   Handling    Skip A. Lawyer

期望的输出:

MatterID       Handling        Supervising 
27391-0001001  Skip A. Lawyer  Skip A.Lawyer 
etc...

像一个支点但没有聚合?

【问题讨论】:

  • 你想要什么输出?
  • AssignedType 的值是列名,ProfName 是值,旁边是 MatterID (Matters.MatterID)
  • 这没有多大意义。你能试着更清楚地解释一下吗?
  • 以我提供的数据为例:列:MatterID,处理,监督行值:27391-0001001,跳过 A. Lawyer,跳过 A.Lawyer 像一个支点但没有聚合?跨度>

标签: sql-server pivot


【解决方案1】:

Min() 或 Max() 也可以是您的枢轴函数的聚合:

SELECT * from (<here the original select goes>) 
AS source
PIVOT 
    (min(ProfName) For AssignedType in ([Handling], [Supervising])) 
AS y;

这将返回一个类似的表格

matterid       Handling        Supervising     
-------------  --------------  --------------  
27391-0001001  Skip A. Lawyer  (null)          
37085-0051001  Skip A. Lawyer  Skip A. Lawyer  
...

【讨论】:

    猜你喜欢
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多