Könnten Sie so etwas verwenden?
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)
Zwei Punkte:Möglicherweise müssen Sie die temporäre Tabelle erstellen, ohne dynamisches SQL zu verwenden, und dann die Select-Anweisung anpassen, um die Tabelle zu ändern. dies ist so, dass die Tabelle im aktuellen Kontext existiert - wenn sich die create-Anweisung im dynamischen Kontext befindet, erhalten Sie möglicherweise einen Fehler.
Ich mag es nicht, dynamisches SQL wie dieses zu verwenden - wenn Sie später einen Pivot verwenden könnten, um die Spalten zurückzugeben, wäre das vielleicht eine bessere Option (ich bin mir nicht sicher, ob es in diesem Fall möglich ist).