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

文字列値を持つmysqlピボットテーブル

    mysqlのバージョンによって異なります 使用しているのは、row_numberを確立する1つのアプローチです。 グループごとに、conditional aggregationを使用します その行番号でグループ化:

    select 
        rn, 
        max(case when stuff = 'bag' then name end) 'bag',
        max(case when stuff = 'book' then name end) 'book',
        max(case when stuff = 'shoes' then name end) 'shoes' 
    from (
      select *, row_number() over (partition by stuff order by name) rn
      from stuff_table
    ) t
    group by rn
    

    古いバージョンのmysqlを使用しているため 、user-defined variablesを使用する必要があります 行番号を確立します。その後、残りは同じように機能します。次に例を示します:

    select 
        rn, 
        max(case when stuff = 'bag' then name end) 'bag',
        max(case when stuff = 'book' then name end) 'book',
        max(case when stuff = 'shoes' then name end) 'shoes' 
    from (
      select *, 
      ( case stuff 
             when @curStuff
             then @curRow := @curRow + 1 
             else @curRow := 1 and @curStuff := stuff 
       end
      ) + 1 AS rn
      from stuff_table, (select @curRow := 0, @curStuff := '') r
      order by stuff
    ) t
    group by rn
    


    1. 疑問符として漢字を保存するCodeigintermysql

    2. Pentahoケトルでの初期リポジトリの設定中にエラーが発生しました

    3. postgreSQLの左側にゼロを埋める

    4. すべてのレコードをカウントし、表示用に特定の数のみを取得(LIMIT)する方法は?