【发布时间】:2012-09-26 07:50:49
【问题描述】:
我正在构建数据透视查询以在报告表单中显示数据,如下所示。
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
上述查询的结果如下。
我想要如下结果
在此我需要在 tv 中附加“C”,因此将有 2 列 29C 和 29,在 29C 下我需要显示 29C + dpv,在 29 下我需要显示 tv + dpv 的总和(即 29+ 5 =34) 对所有列都如此。
我怎样才能实现它?我们如何添加多个聚合值? 提前致谢。
【问题讨论】:
-
你能用一个工作数据模型创建一个SQL Fiddle吗?可能有多种方法可以做到这一点,但更容易看到工作模型。
标签: sql sql-server sql-server-2008-r2 pivot