Взех това от книгата Изкуството на 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;
Това трябва да ви даде това, което искате.