【问题标题】:UnPivot multiple columns MSSQLServerUnPivot 多列 MSSQLServer
【发布时间】:2021-12-30 00:56:22
【问题描述】:

我有一个 MSSQLServer 表如下:

CASNumber ClaimVersion ActualHSS ApprovedHSS ActualSurg ApprovedSurg ActualAmb ApprovedAmb
GN00000068 1 819.64 819.64 190 120 1232 1142

从上表中,我正在寻找如下输出:

CASNumber ClaimVersion Item Actual Approved
GN00000068 1 ActualHSS 819.64 819.64
GN00000068 1 ActualSurg 190 120
GN00000068 1 ActualAmb 1232 1142

非常感谢任何专业知识指导。

感谢和问候

【问题讨论】:

    标签: sql-server tsql sql-server-2014


    【解决方案1】:

    您可以使用VALUES 表值构造函数和一个额外的APPLY 运算符来反透视表:

    表:

    SELECT *
    INTO Data
    FROM (VALUES 
       ('GN00000068', 1, 819.64, 819.64, 190, 120, 1232, 1142)
    ) v (CASNumber, ClaimVersion, ActualHSS, ApprovedHSS, ActualSurg, ApprovedSurg, ActualAmb, ApprovedAmb)
    

    声明:

    SELECT d.CASNumber, d.ClaimVersion, v.Item, v.Actual, v.Approved
    FROM Data d
    CROSS APPLY (VALUES
       ('HSS', d.ActualHSS, d.ApprovedHSS),
       ('Surg', d.ActualSurg, d.ApprovedSurg),
       ('Amb', d.ActualAmb, d.ApprovedAmb)
    ) v (Item, Actual, Approved)
    

    结果:

    CASNumber  ClaimVersion Item  Actual  Approved
    ----------------------------------------------
    GN00000068 1            HSS   819.64    819.64
    GN00000068 1            Surg  190.00    120.00
    GN00000068 1            Amb  1232.00   1142.00
    

    【讨论】:

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