sql >> Base de Datos >  >> RDS >> Sqlserver

Creación dinámica de tabla en tsql.

¿Serías capaz de usar algo como esto?

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)

Dos puntos:es posible que necesite crear la tabla temporal sin usar sql dinámico, luego ajuste la declaración de selección para modificar la tabla; esto es para que la tabla exista en el contexto actual; si la declaración de creación está en la dinámica, es posible que obtenga un error.

No me gusta usar sql dinámico como este:si pudiera usar un pivote más tarde para devolver las columnas, esa podría ser una mejor opción (no estoy seguro de si es posible en este caso).