Динамическое создание таблицы в tsql

Я пытаюсь создать искушение динамически в tsql. У меня есть запрос, который дает мне некоторые данные (в результате другого динамического запроса) в столбце. Например, скажем, год 2011/2012. Это будет в столбце. Я хочу выбрать значение каждой строки и назвать его именем столбца типа int. Позже я могу использовать эту временную таблицу, чтобы выгрузить в нее данные.

Какие-либо предложения?


person AWais ALi    schedule 23.03.2016    source источник


Ответы (1)


Сможете ли вы использовать что-то подобное?

DECLARE @Tab VARCHAR(MAX)
SET @Tab = 'CREATE TABLE #Whatever ('

SELECT @Tab = @Tab + QUOTENAME(ColumnName) + ' INT NULL
,'
FROM @This
SELECT @Tab = SUBSTRING(@Tab,1,LEN(@Tab)-1) + ')'
PRINT @Tab
-- EXEC (@Tab)

Два момента: вы можете обнаружить, что вам нужно будет создать временную таблицу без использования динамического sql, а затем настроить оператор select для изменения таблицы; это сделано для того, чтобы таблица существовала в текущем контексте - если оператор создания находится в динамическом, вы можете получить ошибку.

Мне не нравится использовать динамический sql, подобный этому - если бы вы могли позже использовать сводку для возврата столбцов, это могло бы быть лучшим вариантом (я не уверен, возможно ли это в этом случае).

person High Plains Grifter    schedule 23.03.2016