嗨,我是Sql Programming的新手。
我有一个表“Temp”有两个字段“Name”& “软件”
我正在转动一个表格,向他显示软件版本的名称和数量。
我对pivot的查询是:
select * from temp
pivot(count(Software) for Software in ([Professional],[Personal],[Standard])) as PVT
但不是在in ([Professional],[Personal],[Standard])
我想从选择查询中选择应该是:select distinct software from temp
当我将这个select查询写入in子句时,它会给出错误。
我如何实现这一目标?
请帮忙。提前谢谢。
答案 0 :(得分:2)
Declare @cols nvarchar(max)
select @cols =
stuff( ( select distinct ',[' + Ltrim(rtrim(Software)) +']' from temp FOR XML PATH('')),1,1,'');
EXEC('select * from temp pivot(count(Software) for Software in ('+@cols+')) as PVT')
@cols变量将包含从查询select distinct Software from temp
获取的行作为XML格式:即[Standard],[Personal],[Professional]
,然后使用EXEC()
函数将结果发送到数据透视查询语句。