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.