Skulle du kunna använda något sånt här?
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)
Två punkter:Du kanske kommer att behöva skapa temptabellen utan att använda dynamisk sql och sedan justera select-satsen för att ändra tabellen; detta är så att tabellen existerar i det aktuella sammanhanget - om skapa-satsen finns i dynamiskt kan du få ett felmeddelande.
Jag gillar inte att använda dynamisk sql så här - om du kunde använda en pivot senare för att returnera kolumnerna kan det vara ett bättre alternativ (jag är inte säker på om det är möjligt i det här fallet).