Dynamisches Pivotieren in Oracle: Zeilen in Spalten umwandeln
Dieser Artikel befasst sich mit der Herausforderung des dynamischen Pivotierens von Zeilen in Spalten in Oracle. Diese Technik ermöglicht die Umwandlung von Daten, bei denen Schlüssel und Werte in Zeilen gespeichert sind, in ein Tabellenformat mit Spalten, die die Schlüssel und Zeilen, die die Werte darstellen.
Das Problem
Bei einer Tabelle mit einer ID als Primärschlüssel, Schlüsseln (K) und Werten (V) besteht das Ziel darin, eine Pivot-Tabelle mit so vielen Spalten zu erstellen, wie in der Originaltabelle eindeutige Schlüssel vorhanden sind. Die Abfrage sollte in der Lage sein, unbekannte Spaltennamen zu verarbeiten, die dynamisch entstehen können.
Oracle 11g-Lösung
Oracle 11g bietet die PIVOT-Operation, die diese Anforderung erfüllt. Die folgende Abfrage demonstriert ihre Verwendung:
select * from (select id, k, v from _kv) pivot(max(v) for k in ('name', 'age', 'gender', 'status'))
Oracle XML Pivot Option (Oracle 11g)
Für Szenarien, in denen die Spaltenüberschriften unbekannt sind, stellt Oracle eine Pivot-XML bereit Option, wie in der Abfrage zu sehen unten:
select * from (select id, k, v from _kv) pivot xml (max(v) for k in (any))
Bearbeiten:
An der Abfrage wurden Änderungen vorgenommen, um Werte zu aggregieren und die IN-Klausel einzuschließen, wie in den Kommentaren erwähnt. Die Angabe von Werten in der IN-Klausel beeinträchtigt jedoch den dynamischen Charakter der Abfrage.
Das obige ist der detaillierte Inhalt vonWie kann ich in Oracle Zeilen dynamisch in Spalten umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!