如何在SQL Server中透视存储过程的结果

时间:2012-06-21 18:40:58

标签: sql sql-server stored-procedures pivot unpivot

我有一个存储过程,它以以下格式返回数据:

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

编辑:使用3个参数调用StorProc,我需要保留原始输出。

有什么想法吗?

我正在使用SQL Server 2005,Visual Studio 2008,C#,输出转到.aspx页面。

1 个答案:

答案 0 :(得分:3)

如果您想转换存储过程的结果,则需要使用UNPIVOT and PIVOT来获取最终产品:

查看SQL Fiddle with a Demo

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

您希望在商店流程中转换这些值,然后您必须发布完整查询,以便我们可以看到它。