Czy mógłbyś użyć czegoś takiego?
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)
Dwie uwagi:Może się okazać, że będziesz musiał utworzyć tabelę tymczasową bez użycia dynamicznego sql, a następnie dostosować instrukcję select, aby zmienić tabelę; dzieje się tak, aby tabela istniała w bieżącym kontekście - jeśli instrukcja create jest w dynamice, możesz otrzymać błąd.
Nie lubię używać dynamicznego sql w ten sposób - jeśli mógłbyś później użyć osi do zwrócenia kolumn, może to być lepsza opcja (nie jestem pewien, czy w tym przypadku jest to możliwe).