0

次の形式でデータを返すストアド プロシージャがあります。

Date  |  Unit A Count  |  Unit B Count  |  Unit C Count
2010  |         335    |          52    |         540
2011  |         384    |          70    |         556
2012  |         145    |          54    |         345

内部的に、このストアド プロシージャは別のストアド プロシージャを呼び出すため、再度ネストすることはできません。
私が求めているのは、上記の出力をピボットして次のようにする方法です。

              |  2010  |  2011  |  2012
Unit A Count  |   335  |   384  |   145
Unit B Count  |    52  |    70  |    54
Unit C Count  |   540  |   556  |   345

編集: StorProc は 3 つのパラメーターで呼び出され、元の出力を保持する必要があります。

何か案は?

SQL Server 2005、Visual Studio 2008、C# を使用しており、出力は .aspx ページに送られます。

4

1 に答える 1

3

ストアド プロシージャの結果を変換する場合は、UNPIVOT と PIVOTを使用して最終製品を取得する必要があります。

デモで SQL Fiddle を見る

select *
from 
(
    select date, value, unit
    from 
    (
        select *
        from t1
    ) x
    unpivot ([value] for unit in ([unita], [unitb], [unitc])) u
) a
pivot
(
    sum(value)
    for date in ([2010], [2011], [2012])
) p

ストア プロシージャでこれらの値を変換したい場合は、その完全なクエリを投稿して確認できるようにする必要があります。

于 2012-06-21T18:53:45.393 に答える