【问题标题】:Multiple aggregate & customize value with Pivot query in SQL在 SQL 中使用 Pivot 查询进行多个聚合和自定义值
【发布时间】: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 sql-server sql-server-2008-r2 pivot


【解决方案1】:

添加这个...

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-05
    • 2010-11-17
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2020-05-14
    相关资源
    最近更新 更多