从现有View Table实现此特定输出的T-SQL代码是什么?

时间:2016-09-14 12:52:35

标签: sql-server tsql syntax pivot

我正在运行SQL Server 2016,我有以下简单的T-SQL查询,它提供以下输出:

查询:

SELECT * from ExtrasViewTable

输出:

 ID      Property     F&B    SPA    TotalExp        Mth
  1        ABC        100     0       100        2014-09-01
  2        XYZ         50    20        70        2014-10-01

我想将输出更改为以下内容:

 ID     Property        Mth          ExpCat       ExpCatAmt
  1       ABC        2014-09-01       F&B            100
  1       ABC        2014-09-01       SPA              0
  1       ABC        2014-09-01       TotalExp       100
  2       XYZ        2014-10-01       F&B             50
  2       XYZ        2014-10-01       SPA             20
  2       XYZ        2014-10-01       TotalExp        70

我很难找到正确的T-SQL代码来实现这一目标。我尝试了一些基本的Pivot操作,但它们错了。

1 个答案:

答案 0 :(得分:0)

您可以使用UnPivot,

DECLARE @ExtrasViewTable TABLE (
    ID INT
    ,Property VARCHAR(10)
    ,[F&B] INT
    ,SPA INT
    ,TotalExp INT
    ,Mth DATE
    )

insert into @ExtrasViewTable values 
(1,'ABC',100, 0,100,'2014-09-01')
,(2,'XYZ', 50,20, 70,'2014-10-01')

SELECT ID,Property,Mth,Expcat,Expcatamt
FROM @ExtrasViewTable
unpivot(Expcatamt FOR Expcat IN (
            [F&B]
            ,SPA
            ,TotalExp
            )) unpiv;