我正在构建透视查询以在报告表格中显示数据,如下所示。
CREATE TABLE #Table1 (ColId INT)
INSERT INTO #Table1 VALUES(29)
INSERT INTO #Table1 VALUES(49)
INSERT INTO #Table1 VALUES(59)
DECLARE @cols NVARCHAR(2000)
SELECT @cols = COALESCE(@cols + ',[' + Convert(varchar(10), ColId) + ']',
'[' + Convert(varchar(10), ColId) + ']')
FROM #Table1
print (@cols)
Declare @final NVARCHAR(2000)
set @final=
'SELECT *
FROM (
SELECT tv
, rv
, dpv
FROM (
---Inner join query with multiple tables ----
) As C
) P
PIVOT (
Max(dpv)
FOR tv IN (' + @cols + ')
) AS PVT'
exec(@final)
drop table #Table1
以上查询结果如下。
我想结果如下
在这个我需要在电视中附加'C'所以会有2列29C&在29和29C下我需要显示29C + dpv而在29以下我需要显示所有列的tv + dpv(即29 + 5 = 34)的总和。
我如何实现它?我们如何添加多个聚合值? 提前谢谢。
答案 0 :(得分:2)
添加此...
DECLARE @c2 varchar(2000)
select @c2 = ''
SELECT
@c2 = @c2+ ', '''+ col + 'C+'' + CONVERT(varchar(5), ['+col+']) as ['+col+'C], ['+col+']+'+col+' as ['+col+'] '
FROM (select convert(varchar(10),colid) as col from #Table1) v
declare @sql nvarchar(2000)
select @sql = 'select rv ' + @c2 + ' from (' +@final + ') v'
exec (@sql)