このようなものを使用できますか?
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)
プレ>2 つのポイント:動的 SQL を使用せずに一時テーブルを作成し、次に select ステートメントを調整してテーブルを変更する必要がある場合があります。これは、テーブルが現在のコンテキストに存在するようにするためです。create ステートメントが動的にある場合、エラーが発生する可能性があります。
私はこのような動的 SQL を使用するのは好きではありません - 後でピボットを使用して列を返すことができれば、それがより良い選択肢になるかもしれません (この場合、それが可能かどうかはわかりません)。