【发布时间】:2018-08-28 17:27:50
【问题描述】:
我一直在尝试转置这个;
**ProjectNum PillarID BusinessPillar**
95329 29 Pillar29
95329 1 Pillar1
95354 1 Pillar1
95354 4 Pillar4
95354 7 Pillar7
进入这个;
**ProjectNum Pillars**
95329 Pillar1, Pillar29
95354 Pillar1, Pillar4, Pillar7
我已经研究过使用 pivot/unpivot 并且已经走到了这一步
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(PillarID)
from dbo.MyTable
group by BusinessPillar, PillarID
order by PillarID
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = N'SELECT ProjectNum, ' + @cols + N' from
(
select ProjectNum, PillarID, BusinessPillar
from dbo.MyTable
) x
pivot
(
max(BusinessPillar)
for PillarID in (' + @cols + N')
) p '
exec sp_executesql @query;
但是,我在弄清楚如何将所有转置结果组合成一个逗号分隔的列时遇到了很多麻烦,就像我想要的示例一样。
感谢任何帮助或指导。
【问题讨论】:
-
请添加DB名称作为标签。
标签: sql sql-server tsql pivot unpivot