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!