Heim >Datenbank >MySQL-Tutorial >Wie aggregiere ich in Oracle SQL mehrere Zeilen zu einer einzigen Zeile?

Wie aggregiere ich in Oracle SQL mehrere Zeilen zu einer einzigen Zeile?

Linda Hamilton
Linda HamiltonOriginal
2025-01-15 18:42:43645Durchsuche

How to Aggregate Multiple Rows into a Single Row in Oracle SQL?

Oracle SQL führt mehrere Zeilen zu einer einzigen Zeile zusammen

In einer Oracle-Datenbank müssen Sie möglicherweise mehrere Zeilen in einer Tabelle zu einer Zeile zusammenführen und so eine Tabellenstruktur mit mehreren Spalten erstellen. Angenommen, es gibt eine Tabelle mit dem folgenden Schema:

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

Um die folgenden erwarteten Ergebnisse zu erzielen:

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

Oracle bietet spezifische SQL-Funktionen, um diesen Bedarf zu erfüllen:

WM_CONCAT-Funktion (veraltet)

Warnung: Die WM_CONCAT-Funktion ist jetzt veraltet und wurde in Oracle 12c und höher entfernt. Die Verwendung in späteren Versionen kann zu unvorhersehbaren Ergebnissen führen.

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

LISTAGG-Funktion

Für neuere Oracle-Versionen empfiehlt sich die Verwendung der LISTAGG-Funktion:

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

Benutzerdefinierte Aggregation

Wenn weder die WM_CONCAT- noch die LISTAGG-Funktion in Ihrer Oracle-Version verfügbar sind, können Sie benutzerdefinierte Aggregationen implementieren, indem Sie die folgenden Schritte ausführen:

  1. Erstellen Sie eine temporäre Tabelle zum Speichern aggregierter Daten.
  2. Fügen Sie die erforderlichen Daten mithilfe einer Schleife oder Rekursion in die temporäre Tabelle ein.
  3. Aggregierte Daten aus einer temporären Tabelle abrufen.

Bitte beachten Sie, dass benutzerdefinierte Aggregationen möglicherweise komplexer und rechenintensiver sind als die Verwendung vordefinierter Funktionen.

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