从现有视图 Table 实现此特定输出的 T-SQL 代码是什么?
What are the T-SQL codes to achieve this specific output from an existing View Table?
我是 运行 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 操作,但它们都是错误的。
您可以使用 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;
我是 运行 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 操作,但它们都是错误的。
您可以使用 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;