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.