sql >> Databáze >  >> RDS >> Mysql

Transponovat řádek do sloupců pomocí MySQL bez použití UNIIONS?

Mám to z knihy Umění SQL , strany 284-286:

Řekněme, že název vaší tabulky je foo .

Nejprve vytvořte tabulku s názvem pivot :

CREATE Table pivot (
  count int
);

Vložte do těchto tabulek tolik řádků, kolik je sloupců, které chcete otočit v foo . Protože v foo máte tři sloupce které chcete otočit, vytvořte v kontingenční tabulce tři řádky:

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

Nyní proveďte kartézské spojení mezi foo a pivot pomocí CASE pro výběr správného sloupce na základě počtu:

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 by vám mělo dát to, co chcete.




  1. Jsou funkce PostgreSQL transakční?

  2. SQL Server dotaz k nalezení všech oprávnění/přístupu pro všechny uživatele v databázi

  3. Podmíněný SUM na Oracle

  4. Nahraďte null 0 v MySQL