Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Dynamische Tabellenerstellung in tsql

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).