【发布时间】:2019-01-22 11:34:19
【问题描述】:
您好,我正在尝试编写动态数据透视表,因为我有 100 多列
ID Question Answer
1 Name peter
1 DOB 11/12/2003
1 address …..
1 Issue1 d
1 Issue2 a
2 Name sam
2 DOB 10/01/1998
2 address …..
2 Issue1 p
2 Issue2 f
我想要这样的输出:
ID Name DOB address Issue1 Issue2
1 peter 11/12/2003 …. d a
2 sam 10/01/1998 …. p f
这是我使用的代码:-
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Question)
from #temp
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = N'SELECT ID + @cols + N'
from #temp
pivot
(
max([answer])
for Question in (' + @cols + N')
) p '
exec sp_executesql @query;
但我在单独的一行中得到每个答案。我希望一个 ID 的所有答案都排成一行。有人可以帮助我。感谢您在这方面的时间。谢谢。
我得到这样的输出,这不是我想要的。我想要上面的输出。
ID Name DOB address Issue1 Issue2
1 Peter
1 11/12/2003
1 …
1 d
1 a
【问题讨论】:
-
“我希望一个 ID 的所有答案都在一个列中”。我不明白。您想要的结果有多个列。
-
您使用的是哪个 dbms? (该代码是特定于产品的。)
-
嗨,戈登,我已经用我得到的输出编辑了我上面的帖子。我正在使用 Sql 2008
-
抱歉,我输入的是列而不是行。我想要一行中每个 id 的所有答案。我在不同的行中得到每个答案。任何帮助将不胜感激
标签: sql dynamic pivot entity-attribute-value