我正在使用 SQLServer2008。在存储过程中,我计算了一些数量并存储在@tmp 表中,然后从@tmp 表中获取数据。
SELECT t.BrokerCode,
t.PlanYear ,
t.PlanName ,
SUM(Fresh) AS 'Fresh' ,
FROM @tmp AS t
GROUP BY t.PlanYear ,
t.PlanName ,
t.CscName ,
t.BrokerCode
这给了我这样的结果:
-------------------------------------------------
BrokerCode | PlanYear | PlanName | Fresh
-------------------------------------------------
106 | 3 | SLP | 0.00
106 | 3 | MLP | 1140.00
106 | 5 | MLP | 570.00
205 | 4 | SLP | 450.00
现在我想将数据显示为:
----------------------------------------------------------
| SLP | MLP |
---------------------------------------------------------
BrokerCode | 3 | 4 | 3 | 5 |
----------------------------------------------------------
106 | 0.00 | 0.00 | 1140.00 | 570.00 |
205 | 0.00 | 450.00 | 0.00 | 0.00 |
我听说过 Pivot 查询,但我对 Pivot 查询了解不多,但我仍然尝试使用以下查询
SELECT *
FROM
(
SELECT [PlanYear], [BrokerCode], [Fresh]
FROM @tmp
) AS source
PIVOT
(
sum([Fresh])
FOR [PlanYear] IN ([3], [4], [5])
) as pvt
所以它给了我结果:
----------------------------------------------
BrokerCode | 3 | 4 | 5 |
----------------------------------------------
106 | 1140.00 | 0.00 | 570.00 |
205 | 0.00 | 450.00 | 0.00 |
但我的问题是 PlanYear 可以是任何东西。
那么我该怎么做呢?谢谢。