sql >> データベース >  >> RDS >> Sqlserver

tsql でのテーブルの動的作成

    このようなものを使用できますか?

    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 を使用するのは好きではありません - 後でピボットを使用して列を返すことができれば、それがより良い選択肢になるかもしれません (この場合、それが可能かどうかはわかりません)。




    1. Mysqlは、実行ごとに行の切り替えを選択します

    2. T-SQL火曜日#64:1つのトリガーまたは多数?

    3. IF/ELSEステートメントを使用してSQLで新しいxmlノードエントリを更新または作成する方法

    4. Oracleで親(任意のレベル)の最も子のノードを検索します