Heim >Datenbank >MySQL-Tutorial >Wie verkette ich mehrere Zeilen zu einer einzigen Zeile in Oracle ohne gespeicherte Prozeduren?
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!