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.