Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Creazione dinamica di tabelle in tsql

Saresti in grado di utilizzare qualcosa del genere?

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)

Due punti:potresti scoprire che dovrai creare la tabella temporanea senza utilizzare sql dinamico, quindi regolare l'istruzione select per modificare la tabella; questo è così che la tabella esiste nel contesto corrente:se l'istruzione create è nella dinamica, potresti ricevere un errore.

Non mi piace usare sql dinamico in questo modo:se potessi utilizzare un pivot in seguito per restituire le colonne, potrebbe essere un'opzione migliore (non sono sicuro che sia possibile in questo caso).