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)
这给了我一个语法错误,因为你在枢轴中不能有多个计算(就我从错误中理解的那样).
救命!!!
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.
| 归档时间: |
|
| 查看次数: |
1782 次 |
| 最近记录: |