Задать вопрос
@googlgan

Как передать в PIVOT (T-SQL) переменную вместо перечисления столбцов?

Пытаюсь сделать динамический PIVOT. Но не получается передать название столбцов через переменную. Есть таблица вида:
Артикул | Наименование | Количество | Месяц
1001 Товар 1 234 Январь
1001 Товар 1 435 Февраль
1001 Товар 1 213 Январь
1002 Товар 2 123 Январь
1002 Товар 2 32 Февраль

Запрос по типу ниже прекрасно работает:

SELECT [Артикул], [Январь], [Февраль] FROM [TP] 
		PIVOT (sum([Количество]) FOR [Месяц] 
		IN ([Январь], [Февраль])) as pvt


Но как сделать так, чтобы заработал аналогичный запрос но с переменной

DECLARE @column_month NVARCHAR(MAX);
	  SET @column_month = '[Январь], [Февраль]'

		SELECT [Артикул], @column_month FROM [TP] 
		PIVOT (sum([Количество]) FOR [Месяц] 
		IN (@column_month)) as pvt
  • Вопрос задан
  • 610 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
tsklab
@tsklab Куратор тега Transact-SQL
Здесь отвечаю на вопросы.
Ответ написан
Комментировать
@googlgan Автор вопроса
Разобрался. Нужно обернуть запрос EXECUTE и записать переменные по примеру:

DECLARE @column_month NVARCHAR(MAX);
	  SET @column_month = '[Январь], [Февраль]'

	  EXECUTE('
		SELECT [Артикул],  ' + @column_month  + ' FROM [TP] 
		PIVOT (sum([Количество]) FOR [Месяц] 
		IN (' + @column_month  + ')) as pvt
		')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы