如何在 SQL Server 2012 中使用 CROSS APPLY 逆透视列

How to unpivot columns using CROSS APPLY in SQL Server 2012

我想使用 CROSS APPLY 来 UNPIVOT 多列。

CGL, CPL, EO 应成为覆盖类型,CGL, CPL, EO 的值应位于 Premium 列,CGLTria,CPLTria,EOTria 的值应位于 [=16] 列=]

declare @TestDate table  ( 
                            QuoteGUID varchar(8000), 
                            CGL money, 
                            CGLTria money, 
                            CPL money,
                            CPLTria money,
                            EO money,
                            EOTria money
                            )

INSERT INTO @TestDate (QuoteGUID, CGL, CGLTria, CPL, CPLTria, EO, EOTria)
VALUES ('2D62B895-92B7-4A76-86AF-00138C5C8540', 2000, 160, 674, 54, 341, 0),
       ('BE7F9483-174F-4238-8931-00D09F99F398', 0, 0, 3238, 259, 0, 0),
       ('BECFB9D8-D668-4C06-9971-0108A15E1EC2', 0, 0, 0, 0, 0, 0)

SELECT * FROM @TestDate

输出:

结果应该是这样的:

一种快速简便的方法是 VALUES

例子

select A.QuoteGUID
      ,B.*
 From  @TestDate A
 Cross Apply ( values ('CGL',CGL,CGLTria)
                     ,('CPL',CPL,CPLTria)
                     ,('EO',EO,EOTria)
             ) B (CoverageType,Premium,TiraPremium)

Returns