Бихте ли могли да използвате нещо подобно?
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 като този - ако можете да използвате пивот по-късно, за да върнете колоните, това може да е по-добър вариант (не съм сигурен дали е възможно в този случай).