我正在运行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操作,但它们错了。
答案 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;