Heim >Datenbank >MySQL-Tutorial >Kann Oracle SQL mehrere Zeilen in einer einzigen Zeile zusammenfassen?

Kann Oracle SQL mehrere Zeilen in einer einzigen Zeile zusammenfassen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-15 18:47:47929Durchsuche

Can Oracle SQL Aggregate Multiple Rows into a Single Row?

Oracle SQL: Mehrere Datenzeilen zu einer Zeile zusammenführen

Frage:

Kann Oracle SQL mehrere Datenzeilen in einer Tabelle in einer Zeile zusammenführen?

Anleitung:

Angenommen, es gibt eine Tabelle mit der folgenden Struktur:

<code>A 1
A 2
B 1
B 2</code>

Das Ziel besteht darin, die folgende Ergebnismenge zu erhalten:

<code>A 1 2
B 1 2</code>

Lösung:

Abhängig von der von Ihnen verwendeten Oracle SQL-Version können Sie die folgenden Methoden verwenden:

1. wm_concat()-Funktion (Oracle 12c und niedriger):

<code class="language-sql">SELECT field1, wm_concat(field2)
FROM YourTable
GROUP BY field1;</code>

(Hinweis: Die Funktion wm_concat() ist in Oracle 12c veraltet. Es wird empfohlen, stattdessen LISTAGG zu verwenden.)

2. Benutzerdefinierte String-Aggregation:

Wenn die Funktion wm_concat() nicht verfügbar ist, können Sie eine benutzerdefinierte Methode zur String-Aggregation implementieren. Detaillierte Anweisungen finden Sie unter oracle-base.com.

3. Verwenden Sie die LISTAGG-Funktion (Oracle 11gR2 und höher):

Dies ist der empfohlene moderne Ansatz, da er robuster ist und in neueren Oracle-Versionen unterstützt wird.

<code class="language-sql">SELECT field1, LISTAGG(field2, ' ') WITHIN GROUP (ORDER BY field2) AS aggregated_field2
FROM YourTable
GROUP BY field1;</code>

Diese Abfrage verwendet die Funktion LISTAGG, um die Werte in field2 zu einer Zeichenfolge zu verketten, wobei Leerzeichen als Trennzeichen verwendet werden und nach dem Wert von field2 sortiert wird. Die WITHIN GROUP (ORDER BY field2)-Klausel stellt die Reihenfolge der Werte in der resultierenden Zeichenfolge sicher. Die GROUP BY field1-Klausel wird nach dem Wert von field1 gruppiert, wodurch mehrere Zeilen zu einer Zeile zusammengeführt werden.

Wählen Sie die Lösung, die am besten zu Ihrer Oracle-Version passt. Für Oracle 11gR2 und höher wird dringend empfohlen, die Funktion LISTAGG zu verwenden.

Das obige ist der detaillierte Inhalt vonKann Oracle SQL mehrere Zeilen in einer einzigen Zeile zusammenfassen?. 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