0

SQLServer2005データベースからいくつかのレコードを取得しています。

ここに画像の説明を入力してください

データをピボットして、次のような結果を表示したいと思います。

ここに画像の説明を入力してください

日付とプロセスは無制限にすることができるので、動的ピボットを使用したいと思います。私はいくつかの解決策を試しましたが、それを機能させることができませんでした。

4

1 に答える 1

1

まず、テーブルに無制限の数の列を含めることはできないため、1023プロセスが少ないと想定しています。とにかく、これには動的ピボットを使用する必要があります。

DECLARE @Processes AS NVARCHAR(MAX), @Query  AS NVARCHAR(MAX);

SELECT @Processes = STUFF(( SELECT DISTINCT ',' + QUOTENAME(Process) 
                            FROM YourTable
                            WHERE Process IS NOT NULL
                            FOR XML PATH(''), 
                            TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')

SET @Query = '
SELECT *
FROM YourTable T
PIVOT(SUM([Percent]) FOR Process IN ('+@Processes+')) AS PT'

EXEC(@Query)

これがライブデモ付きのsqlfiddleです。

于 2013-03-25T18:11:03.847 に答える