【发布时间】:2019-06-28 12:18:20
【问题描述】:
我正在尝试对表格进行透视,但也将每条记录分组为一个。这是我的问题:
我有一张表,其中包含 [SchemeCode]、[MonthYear] 和 [Revenue]。每个 [SchemeCode] 有多个 [MonthYear] 及其对应的 [Revenue]。
| Scheme Code | MonthYear | Revenue |
|-------------|-----------|---------|
| 18VDA | 2018.1 | 100 |
| 18VDA | 2018.2 | 200 |
| 18VDA | 2018.3 | 200 |
但我正在努力让它变成这样:
| Scheme Code | 2018.1 | 2018.2 | 2018.3 |
|-------------|--------|--------|--------|
| 18VDA | 100 | 200 | 300 |
我知道正常旋转是如何工作的,但问题是当我这样做时,输出会保留三个 18VDA 记录,如下所示:
| Scheme Code | 2018.1 | 2018.2 | 2018.3 |
|-------------|--------|--------|--------|
| 18VDA | 100 | -- | -- |
| 18VDA | -- | 200 | -- |
| 18VDA | -- | -- | 300 |
我希望方案代码也全部聚合为一个。下面是我用来创建上表的代码:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME([MonthYear])
from TableA
group by [MonthYear]--, id
--order by id
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = '[Scheme Code],' + @cols + '
from TableA
pivot(sum([Revenue]) for MonthYear in (' + @cols + ')
) as RevenueMonth'
execute(@query);
有人可以帮我解决这个问题吗?
谢谢!
【问题讨论】:
标签: sql-server tsql pivot