Zeilen in durch Kommas getrennte Listen in Oracle zusammenfassen
Oracle bietet mehrere Funktionen zum Konsolidieren mehrerer Zeilen in einer einzigen Zeichenfolge mit durch Kommas getrennten Werten. Dies ist eine häufige Aufgabe bei der Datenaggregation und Berichtserstellung. Die bekanntesten Funktionen sind WM_CONCAT
und LISTAGG
.
Verwenden von WM_CONCAT
Verfügbar in Oracle-Versionen vor 11.2, WM_CONCAT
verkettet Werte aus mehreren Zeilen mithilfe eines angegebenen Trennzeichens. Um beispielsweise eine durch Kommas getrennte Liste von Tabellennamen innerhalb eines Schemas zu generieren:
<code class="language-sql">SELECT WM_CONCAT(table_name) FROM user_tables;</code>
Beschäftigung LISTAGG
Eingeführt in Oracle 11.2, LISTAGG
bietet gegenüber WM_CONCAT
erweiterte Funktionen. Es ermöglicht eine bessere Kontrolle, einschließlich der Angabe von Trennzeichen und der Behandlung von NULL-Werten. Das folgende Beispiel erstellt eine durch Kommas getrennte Liste von Tabellennamen, wobei NULL-Einträge weggelassen werden:
<code class="language-sql">SELECT LISTAGG(table_name, ', ') WITHIN GROUP (ORDER BY table_name) FROM user_tables;</code>
Praktische Anwendung
Stellen Sie sich eine Abfrage vor, die für jede Person mehrere Staatsbürgerschaftsdatensätze abruft. Um redundante Einträge zu vermeiden, kann LISTAGG
als Unterabfrage verwendet werden, um eine einzelne durch Kommas getrennte Staatsbürgerschaftsliste pro Person zu generieren:
<code class="language-sql">SELECT person_id, (SELECT LISTAGG(citizenship, ', ') WITHIN GROUP (ORDER BY citizenship) FROM citizenship WHERE person_id = t.person_id) AS citizenship_list FROM person t;</code>
Dies gibt eine einzelne Zeile pro Person zurück, mit einer durch Kommas getrennten Zeichenfolge ihrer Staatsbürgerschaften in der Spalte citizenship_list
.
Zusammenfassung
WM_CONCAT
und LISTAGG
bieten robuste und vielseitige Möglichkeiten, mehrere Zeilen in durch Kommas getrennten Listen in Oracle zusammenzufassen. Diese Funktionen optimieren die Datenbearbeitung und verbessern die Klarheit von SQL-Abfragen.
Das obige ist der detaillierte Inhalt vonWie kombiniere ich mehrere Zeilen in einer durch Kommas getrennten Liste in Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!