2

嗨,我是 Sql 编程的新手。

我有一个表“临时”有两个字段“名称”和“软件”

我正在旋转一个向他显示软件版本名称和数量的表格。

我对枢轴的查询是:

select * from temp
pivot(count(Software) for Software in ([Professional],[Personal],[Standard])) as PVT

但不是给出静态值in ([Professional],[Personal],[Standard])

我想从选择查询中选择应该是的软件名称:select distinct software from temp

当我将此选择查询写入 in 子句时,它会出错。

我如何实现这一目标?

请帮忙 。提前致谢。

4

1 回答 1

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 tempXML 格式包含从查询中获取的行:也就是说[Standard],[Personal],[Professional],然后使用EXEC()函数将结果发送到数据透视查询语句。

于 2013-03-13T09:36:01.370 回答