2012-03-10 39 views
4

我似乎無法讓我的頭圍繞這個問題,我想我需要在SQL Server 2008中透視和逆透視的組合:卡住逆透視/樞紐組合SQL Server 2008上

我有一個表,如下所示:

Sale  | Month | Count | Budgeted | Actual 
------------------------------------------------ 
NewSale | 1  | 120 | 45.23 | 50.10 
NewSale | 2  | 30  | 3.10  | 1.2 
NewSale | 3  | 70  | 45.00 | 100.32 

我需要轉動,這樣幾個月的欄目,但是UNPIVOT所以我得到的計數,編入預算,實際爲行,所以它是這樣的...

Type  | 1  | 2  | 3 
----------------------------------- 
Count  | 120 | 30 | 70 
Budgeted | 45.23 | 3.10 | 45.00 
Actual | 50.10 | 1.2 | 100.32 

我到目前爲止,我已經試過了,但我不能RK如何把樞軸在那裏:

select 
* 
from YTD 
pivot 
(
    sum([Count]), sum([Budgeted]), sum([Actual]) 
    for [Month] in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12]) 
) 
as figures 

這給了我一個語法錯誤,因爲你不能在樞軸多個計算(據我從錯誤的理解。

幫助!!!

回答

5
declare @T table 
(
    Sale varchar(10), 
    [Month] int, 
    [Count] int, 
    Budgeted money, 
    Actual money 
) 

insert into @T values 
('NewSale',  1,  120,  45.23,  50.10), 
('NewSale',  2,  30,  3.10,  1.2), 
('NewSale',  3,  70,  45.00,  100.32) 

select [Type], [1], [2], [3] 
from 
(
    select [Month], 
     cast([Count] as money) as [Count], 
     Budgeted, 
     Actual 
    from @T 
) as T 
unpivot 
(
    Value for [Type] in ([Count], Budgeted, Actual) 
) as U 
pivot 
(
    sum(Value) for [Month] in ([1], [2], [3]) 
) as P 

試穿SE-Data

+0

非常感謝你 - 非常好地工作:D – AshesToAshes 2012-03-11 08:08:56

0

你需要做3選擇和聯合的結果來得到一個類似的表。

例如

Select 'Count' as [Type], 120 AS 1, 40 AS 2, 70 AS 3 
    UNION ALL 
    Select 'Budgeted' as [Type], 45.23 AS 1, 3.10 AS 2, 45.00 AS 3 
    UNION ALL 
    Select 'Actual' as [Type], 50.1 AS 1, 1.2 AS 2, 100.32 AS 3 

看起來像你的榜樣

所以只需更換每一個返回您想要的排piviot那些選擇和你GTG

+0

感謝您的幫助。只是一個簡單的問題,我愚蠢的... SQL如何可以選擇[計數]作爲[類型],120 AS 1,40 AS 2,70 AS 3 ...我不知道計數值在設計時,預算,實際等...? – AshesToAshes 2012-03-10 14:16:44

+0

err .. Mikael能夠做到這一點...我站在糾正。用我的方式,你可以爲我的查​​詢有選擇的每個地方使用標準數據透視3次。這些選擇語句中的每一個都會給你一行。 – Hogan 2012-03-10 15:57:29