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

Transponować wiersz do kolumn za pomocą MySQL bez używania UNIS?

Wyciągnąłem to z książki Sztuka SQL , strony 284-286:

Załóżmy, że nazwa Twojej tabeli to foo .

Najpierw utwórz tabelę o nazwie pivot :

CREATE Table pivot (
  count int
);

Wstaw do tej tabeli tyle wierszy, ile jest kolumn, które chcesz przestawić w foo . Ponieważ masz trzy kolumny w foo które chcesz przestawić, utwórz trzy wiersze w tabeli przestawnej:

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

Teraz wykonaj połączenie kartezjańskie między foo i pivot , używając CASE aby wybrać właściwą kolumnę na podstawie liczby:

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;

To powinno dać ci to, czego chcesz.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najszybszy sposób na usunięcie ogromnej tabeli MySQL

  2. Wstawianie danych do tabeli MySQL za pomocą VB.NET

  3. Eksport/Import CSV za pomocą PHPExcel

  4. Jak powstrzymać kogoś przed powrotem do poprzedniej strony?

  5. Zapytanie o wybór ciągów kończy się określonym znakiem