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
Freigeben: 2025-01-15 18:47:47
Original
886 Leute haben es durchsucht

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>
Nach dem Login kopieren

Das Ziel besteht darin, die folgende Ergebnismenge zu erhalten:

<code>A 1 2
B 1 2</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

(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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage