In Oracle können Sie die listagg-Funktion mit der „order by“-Klausel verwenden, um mehrere Zeilen in eine Zeile umzuwandeln. Diese Anweisung kann die Daten sortieren und dann die sortierten Ergebnisse zusammenfügen. Trennzeichen ') innerhalb der Gruppe (Reihenfolge nach Spaltenname)".
Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.
Aufgrund des Bedarfs müssen die Unterorganisationen unter der erhaltenen Organisation in einer Datenzeile zusammengefasst werden, und Oracles eigene Funktion wird verwendet
listagg (Spaltenname , 'Trennzeichen') innerhalb der Gruppe (Reihenfolge nach Spaltenname)
Das heißt, innerhalb jeder Gruppe sortiert LISTAGG die Spalten gemäß der Reihenfolge-nach-Klausel und fügt die sortierten Ergebnisse zusammen
Meine Organisationsstruktur ist eine Baumstruktur, und das folgende SQL lautet: Es dient dazu, die Namen aller Unterabteilungen unter der aktuellen Abteilung abzufragen.
SELECT LISTAGG(O.ORGNAME,',') WITHIN GROUP(ORDER BY LEVEL) FROM ORGANIZATION O START WITH O.ORGID = 1000 CONNECT BY PRIOR O.ORGID = O.PID AND LEVEL<4
Hinweis: Das obige SQL verwendet das Oracle-Schlüsselwort LEVEL, das angibt, auf welcher Ebene sich die Daten in der Baumstruktur befinden.
Das obige SQL verwendet auch die Oracle-Baumabfrageanweisung START WITH … CONNECT BY PRIOR …
Wenn die Abfrage alle sind die übergeordneten Knoten des Knotens, dann sollte das obige START WITH SQL wie folgt geändert werden:START WITH O.ORGID = 1000 CONNECT BY PRIOR O.PID = O.ORGID
(Die Felder nach PRIOR stimmen nicht mit der vorherigen Reihenfolge überein)
ORGANIZATION-Tabellendaten lauten wie folgt
ORGID | ORGNAME | PID |
---|---|---|
1000 | Grundschule | 0 |
1100 | Erste Klasse | 1000 |
1200 | Zweite Klasse | 1000 |
1101 | Klasse 101 | 1201Klasse 201 |
1.LEVEL | ||
ORGNAME | LEVEL | |
Grundschule | 1 |
Erste Klasse
2
2 | |
---|---|
Klasse 102 | |
Klasse 103... | |
Die Ausführungsergebnisse sind wie folgt: | Grundschule, erste Klasse, zweite Klasse, Klasse 101, Klasse 102, Klasse 103, Klasse 2013 Fügen Sie alle untergeordneten Knoten unter dem übergeordneten Knoten in eine Zeile ein |
Grundschule, erste Klasse, zweite Klasse, Klasse 101, Klasse 102, Klasse 103, Klasse 201 | Empfohlenes Tutorial: „ | Oracle Video Tutorial
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie in Oracle mehrere Zeilen in eine. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!