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.