Ik heb dit uit het boek The Art of SQL , pagina's 284-286:
Laten we zeggen dat uw tafelnaam foo
is .
Maak eerst een tabel met de naam pivot
:
CREATE Table pivot (
count int
);
Voeg in die tabellen zoveel rijen in als er kolommen zijn die u wilt draaien in foo
. Aangezien je drie kolommen hebt in foo
die u wilt draaien, maakt u drie rijen in de draaitabel:
insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);
Doe nu een cartesiaanse join tussen foo
en pivot
, met een CASE
om de juiste kolom te selecteren op basis van het aantal:
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;
Dit zou je moeten geven wat je wilt.