Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql tabela przestawna z wartościami ciągów

W zależności od wersji mysql używasz, oto jedno podejście do ustanowienia row_number na grupę, a następnie przy użyciu conditional aggregation pogrupowane według tego numeru wiersza:

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

Ponieważ używasz starszej wersji mysql , musisz użyć user-defined variables aby ustalić numer wiersza. Reszta działa wtedy tak samo. Oto przykład:

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. MySQL:Własność katalogu mysql zmienia się na „mysql” z „service_account” po ponownym uruchomieniu serwera linux

  2. JSON_ARRAY() – Utwórz tablicę JSON z listy wartości w MySQL

  3. MySQL pomija pierwszy wiersz

  4. Czy tabele MySQL wymagają identyfikatora?

  5. Odraczanie częstych aktualizacji w MySQL