2012-03-10 40 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