Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

tabel pivot mysql dengan nilai string

Tergantung pada versi mysql yang Anda gunakan, inilah satu pendekatan untuk membuat row_number per grup, lalu gunakan conditional aggregation dikelompokkan menurut nomor baris tersebut:

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

Karena Anda menggunakan mysql versi lama , Anda harus menggunakan user-defined variables untuk menetapkan nomor baris. Sisanya kemudian bekerja sama. Ini contohnya:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instal Magento - Nama pengenal terlalu panjang

  2. Apakah MySQL Regexp mendukung pencocokan Unicode?

  3. Menghapus bagian dari string di MYSQL

  4. nvl() berfungsi dalam file php

  5. Menyimpan entitas serupa di tabel yang sama vs di beberapa tabel dalam database