没有聚合的透视SQL数据



所以我需要直接pivot我的数据没有聚合。我试过PIVOT、UNPIVOT、CROSS APPLY和CASE语句,它们都让我抓狂。

这是我当前的数据集

tbody><<

您正在寻找的是SQL中的Fully Trasnpose表。可以用UnpivotPivot,也可以用Cross applyPivot你的数据

CREATE TABLE mytable(
Header         VARCHAR(100) NOT NULL 
,Contract_Value INTEGER  NOT NULL
,Total_Cost     INTEGER  NOT NULL
,Profit         INTEGER  NOT NULL
);
INSERT INTO mytable
(Header,Contract_Value,Total_Cost,Profit) VALUES 
('Original Budget',1000,900,100),
('Change Orders',100,90,90);

使用UnpivotPivot

SELECT 
name AS Header, 
[Original Budget], 
[Change Orders] 
FROM 
(
select 
Header, 
name, 
value 
from 
mytable unpivot (
value for name in (
[Contract_Value], [Profit], [Total_Cost]
)
) unpiv
) Src PIVOT (
MAX(value) FOR Header IN (
[Original Budget], [Change Orders]
)
) Pvt 
ORDER BY 
[Original Budget] desc

使用Cross applyPivot

select name as header,
[Original Budget],
[Change Orders]
from 
(
select Header,name,value1
From  mytable
Cross Apply ( values ('Contract_Value',Contract_Value)
,('Total_Cost',Total_Cost)
,('Profit',Profit)
) B (name,value1)
) src
pivot
(
max(value1)
for Header in ([Original Budget], [Change Orders])
) piv
order by [Original Budget] desc

dbfiddle

最新更新



  • All rights reserved © 2023 www.xiaobeizi.cn

  • 首页
Header合同价值总成本利润
原始预算1000900100
改变订单/td>1009090