Ich habe das aus dem Buch The Art of SQL , Seiten 284-286:
Nehmen wir an, Ihr Tabellenname ist foo .
Erstellen Sie zuerst eine Tabelle namens pivot :
CREATE Table pivot (
count int
);
Fügen Sie in diese Tabellen so viele Zeilen ein, wie es Spalten gibt, die Sie in foo pivotieren möchten . Da Sie drei Spalten in foo haben die Sie pivotieren möchten, erstellen Sie drei Zeilen in der Pivot-Tabelle:
insert into pivot values (1);
insert into pivot values (2);
insert into pivot values (3);
Führen Sie nun eine kartesische Verknüpfung zwischen foo durch und pivot , mit einem CASE So wählen Sie die richtige Spalte basierend auf der Anzahl aus:
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;
Dies sollte Ihnen das geben, was Sie wollen.