我有以下数据
Col1, Col2, Col3, Col4, Col5
1, P, W, M, adhfggh
1, P, W, M, fdasdfd
1, P, W, M, retretre
所以,我想得到这个
Col1, Col2, Col3, Col4, ColA, ColB, ColC
1, P, W, M, adhfggh, fdasdfd, retretre
我应该尝试这样的事情,但不知道放在括号中的内容
select Col1, Col2, Col3, Col4, Col5 from tableA
Unpivot
( Col1, Col2, Col3, Col4 for Col5 in (, , ) ) as UnPvt
我感谢任何帮助。
答案 0 :(得分:0)
您没有指定正在使用的SQL版本,因此这是T-SQL,并且可以在2008年之后的任何SQL Server上使用。
这个动态支点是altered from this answer&将根据您的要求进行格式化您可能还希望查看STUFF函数
CREATE TABLE #T
( Col1 int
,Col2 [nchar](3)
,Col3 [nchar](3)
,Col4 [nchar](3)
,Col5 [nchar](10)
)
Insert Into #T
Values
(1,'P','W','M','adhfggh')
,(1,'P','W','M','fdasdfd')
,(1,'P','W','M','retretre');
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.Col5)
FROM #T c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Col1,Col2,Col3,Col4, ' + @cols + ' from
(
select Col1,
Col2,
Col3,
Col4,
Col5
from #T
) x
pivot
(
max(Col5)
for Col5 in (' + @cols + ')
) p '
execute(@query)
drop table #T