坚持Unpivot/Pivot组合SQL Server 2008

Ash*_*hes 4 t-sql sql-server sql-server-2008

我似乎无法理解这个问题,我认为我需要在SQL Server 2008中结合使用pivot和unpivot:

我有一张表如下:

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
Run Code Online (Sandbox Code Playgroud)

我需要进行数据透视,以便将月份作为列,但是不显示,因此我将Count,Budgeted,Actual作为行,所以就像这样......

Type      | 1      | 2     | 3
-----------------------------------
Count     | 120    | 30    | 70
Budgeted  | 45.23  | 3.10  | 45.00
Actual    | 50.10  | 1.2   | 100.32
Run Code Online (Sandbox Code Playgroud)

到目前为止我已经尝试了这个,但我无法弄清楚如何将枢轴放在那里:

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
Run Code Online (Sandbox Code Playgroud)

这给了我一个语法错误,因为你在枢轴中不能有多个计算(就我从错误中理解的那样).

救命!!!

Mik*_*son 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
Run Code Online (Sandbox Code Playgroud)

试试SE-Data.