Застрял на Unpivot/Pivot Combo 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

Мне нужно крутить так, чтобы месяцы были столбцами, но не были открыты, поэтому я получаю 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

Я пробовал это до сих пор, но я не могу понять, как разместить здесь опорную точку:

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

Это дает мне синтаксическую ошибку, так как вы не можете иметь больше одного вычисления в своде (насколько я понял из ошибки.

Help!!!

2 ответа

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.


Вам нужно сделать 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

Будет выглядеть как ваш пример

Так что просто замените каждый из этих элементов пионом, который возвращает нужную строку, и вы GTG

licensed under cc by-sa 3.0 with attribution.