2

以下のようにレポート形式でデータを表示するピボット クエリを作成しています。

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' を追加する必要があるため、29C と 29 の 2 つの列があり、29C 未満では 29C + dpv を表示する必要があり、29 未満では tv + dpv の合計を表示する必要があります (つまり、29+ 5=34)。すべての列でそのようにします。

どうすれば達成できますか?複数の集計値を追加するにはどうすればよいですか? 前もって感謝します。

4

1 に答える 1

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)
于 2012-09-26T10:04:54.050 に答える