Heim >Datenbank >MySQL-Tutorial >Wie verkette ich mehrere Zeilen zu einer einzigen Zeile in Oracle ohne gespeicherte Prozeduren?

Wie verkette ich mehrere Zeilen zu einer einzigen Zeile in Oracle ohne gespeicherte Prozeduren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-05 15:27:40314Durchsuche

How to Concatenate Multiple Rows into a Single Row in Oracle Without Stored Procedures?

Verketten mehrerer Zeilen zu einer einzigen Zeile in Oracle ohne gespeicherte Prozeduren

Das vorliegende Problem sucht nach einer Methode in Oracle, um mehrere Zeilen zu verketten eine, ohne auf gespeicherte Prozeduren zurückzugreifen. Der angegebene Datensatz besteht aus den Spalten „question_id“ und „element_id“ mit doppelten „question_id“-Werten. Das gewünschte Ergebnis besteht darin, die mit derselben Frage_ID verknüpften element_id-Werte in einer einzigen Zeile zusammenzuführen.

Dies kann mithilfe der LISTAGG-Klausel erreicht werden, die in Oracle 11gR2 eingeführt wurde. Hier ist die Syntax:

SELECT question_id,
       LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id)
FROM YOUR_TABLE
GROUP BY question_id;

Diese Klausel verkettet die element_id-Werte für jede questions_id, getrennt durch das angegebene Trennzeichen (in diesem Fall ein Komma). Beachten Sie, dass die WITHIN GROUP-Klausel sicherstellt, dass die Werte vor der Verkettung geordnet werden.

Für Oracle-Versionen 12cR2 und höher können die ON OVERFLOW TRUNCATE/ERROR-Klauseln verwendet werden, um potenzielle Probleme mit Zeichenfolgenlängenbeschränkungen zu behandeln:

SELECT question_id,
       LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id)
       ON OVERFLOW TRUNCATE
FROM YOUR_TABLE
GROUP BY question_id;

oder

SELECT question_id,
       LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id)
       ON OVERFLOW ERROR
FROM YOUR_TABLE
GROUP BY question_id;

Durch Einhaltung der Syntax und Verwendung der entsprechenden Mit diesen Optionen können Entwickler mehrere Zeilen zu einer einzigen Zeile verketten, ohne gespeicherte Prozeduren in Oracle zu erstellen.

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