Привет, я новичок в программировании на 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, он дает ошибку.
Как мне этого добиться?
Пожалуйста помоги . Заранее спасибо.
1 ответ
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()
.
Похожие вопросы
Связанные вопросы
Новые вопросы
sql-server-2008
Используйте этот тег для вопросов, относящихся к версии Microsoft SQL Server 2008.
in
. Но на самом деле я не знаю, как это реализовать.? @Майклexec
.