Ville du være i stand til at bruge sådan noget?
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)
To punkter:Du vil måske opdage, at du bliver nødt til at oprette temp-tabellen uden at bruge dynamisk sql, og derefter justere select-sætningen for at ændre tabellen; dette er for at tabellen eksisterer i den aktuelle kontekst - hvis create-sætningen er i dynamisk, kan du få en fejl.
Jeg kan ikke lide at bruge dynamisk sql som denne - hvis du kunne bruge en pivot senere til at returnere kolonnerne, kunne det være en bedre mulighed (jeg er ikke sikker på, om det er muligt i dette tilfælde).