Взех това от книгата Изкуството на SQL , стр. 284-286:
Да приемем, че името на вашата таблица е foo .
Първо създайте таблица, наречена pivot :
CREATE Table pivot (
count int
);
Вмъкнете в тези таблици толкова редове, колкото има колони, които искате да завъртите в foo . Тъй като имате три колони в foo които искате да завъртите, създайте три реда в обобщената таблица:
insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);
Сега направете декартово присъединяване между foo и pivot , като използвате CASE за да изберете правилната колона въз основа на броя:
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;
Това трябва да ви даде това, което искате.