Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Création dynamique de table en tsql

Seriez-vous capable d'utiliser quelque chose comme ça ?

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)

Deux points :vous devrez peut-être créer la table temporaire sans utiliser SQL dynamique, puis ajuster l'instruction select pour modifier la table ; c'est pour que la table existe dans le contexte actuel - si l'instruction de création est dans la dynamique, vous pouvez obtenir une erreur.

Je n'aime pas utiliser sql dynamique comme celui-ci - si vous pouviez utiliser un pivot plus tard pour renvoyer les colonnes, cela pourrait être une meilleure option (je ne sais pas si c'est possible dans ce cas).