Heim >Datenbank >MySQL-Tutorial >Wie kombiniere ich mehrere Zeilen in einer durch Kommas getrennten Liste in Oracle?

Wie kombiniere ich mehrere Zeilen in einer durch Kommas getrennten Liste in Oracle?

Barbara Streisand
Barbara StreisandOriginal
2025-01-19 17:51:10898Durchsuche

How to Combine Multiple Rows into a Comma-Delimited List in Oracle?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn