Sql 将行转置/透视到列并求和
这是我的问题Sql 将行转置/透视到列并求和,sql,sql-server,tsql,pivot,Sql,Sql Server,Tsql,Pivot,这是我的问题 SELECT * FROM requirementRange PeakRange,DaysOfReq列是nvarchar数据类型,Total是INT数据类型 表如下所示 PeakRange DaysOfReq Total 1 - 3.99 >2 Days 2 9.01+ Day 2 3 1 - 3.99 Day 0 1 4
SELECT *
FROM requirementRange
PeakRange
,DaysOfReq
列是nvarchar数据类型,Total
是INT数据类型
表如下所示
PeakRange DaysOfReq Total
1 - 3.99 >2 Days 2
9.01+ Day 2 3
1 - 3.99 Day 0 1
4 - 5.99 Day 0 1
6 - 8.99 Day 2 2
9 Day 0 1
9.01+ Day 0 1
PeakRange DaysOfReq总计
1-3.99>2天2
9.01+第2天3
1-3.99天0 1
4-5.99天0 1
6-8.99第2天2
第9天01
9.01+第0天1
预期结果
PeakRange Day 0 Day 1 Day 2 >2 Days Total
1 - 3.99 1 0 0 2 3
4 - 5.99 1 0 0 0 1
6 - 8.99 0 0 2 0 2
9 1 0 0 0 1
9.01+ 1 0 3 0 4
泡菜第0天第1天第2天>总共2天
1 - 3.99 1 0 0 2 3
4 - 5.99 1 0 0 0 1
6 - 8.99 0 0 2 0 2
9 1 0 0 0 1
9.01+ 1 0 3 0 4
在这里,我需要将输出从行转换为列,并找到每个范围的总计并放入最后一列。您应该能够使用类似于以下内容的内容:
select
peakrange,
coalesce([Day 0], 0) [Day 0],
coalesce([Day 1], 0) [Day 1],
coalesce([Day 2], 0) [Day 2],
coalesce([>2 Days], 0) [>2 Days],
peak_Total
from
(
select peakrange, daysofreq, total,
sum(total) over(partition by PeakRange) peak_Total
from requirementRange
) d
pivot
(
sum(total)
for daysofreq in ([Day 0], [Day 1], [Day 2],
[>2 Days])
) piv
order by peakrange;
看