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

UNIONSを使用せずにMySQLで行を列に転置しますか?

    私はこれを本から取り出しました The Art of SQL 、284〜286ページ:

    テーブル名がfooだとします。 。

    まず、pivotというテーブルを作成します :

    CREATE Table pivot (
      count int
    );
    

    fooでピボットする列と同じ数の行をそのテーブルに挿入します 。 fooに3つの列があるので ピボットする場合は、ピボットテーブルに3つの行を作成します。

    insert into pivot values (1);
    insert into pivot values (2);
    insert into pivot values (3);
    

    次に、foo間でデカルト結合を実行します およびpivotCASEを使用 カウントに基づいて正しい列を選択するには:

    SELECT foo.id, Case pivot.count
      When 1 Then cat
      When 2 Then one_above
      When 3 Then top_level
    End Case
    FROM foo JOIN pivot;
    

    これにより、必要なものが得られるはずです。




    1. SQLServerの句によるグループ化を理解する-SQLServer/TSQLチュートリアルパート130

    2. 私のmysqlステートメントを最適化する! --RAND()が遅すぎる

    3. 日付/時刻の追加の基準は?

    4. PL /Java1.5.2をPostgreSQL11にインストールします