Heim >Datenbank >MySQL-Tutorial >Wie kann ich in Oracle SQL mehrere Zeilen effizient zu einer einzigen Zeile verketten?
In Oracle ist die effiziente Verkettung mehrerer Zeilen zu einer einzigen Zeile oft ein gewünschter Vorgang. Diese Frage befasst sich mit einem bestimmten Szenario, in dem eine Tabelle Daten im folgenden Format enthält:
question_id | element_id |
---|---|
1 | 7 |
1 | 8 |
2 | 9 |
3 | 10 |
3 | 11 |
3 | 12 |
Das Ziel besteht darin, diese Daten in das folgende gewünschte Ergebnis umzuwandeln:
question_id | element_id |
---|---|
1 | 7,8 |
2 | 9 |
3 | 10,11,12 |
Zu erreichen Um diese Aufgabe effektiv zu bewältigen, ohne auf gespeicherte Prozeduren zurückzugreifen, führte Oracle 11gR2 die LISTAGG-Klausel ein. Mit dieser bemerkenswerten Klausel können solche Verkettungsoperationen direkt in einer einzigen SQL-Anweisung ausgeführt werden.
So implementieren Sie sie in Ihrer Oracle-Abfrage:
SELECT question_id, LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id) FROM YOUR_TABLE GROUP BY question_id;
Die LISTAGG-Klausel hat die folgende Form :
LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY expression)
In diesem Fall geben wir die Spalte „element_id“ als Ausdruck und „“, als Trennzeichen zum Trennen an verkettete Werte. Die WITHIN GROUP-Klausel stellt sicher, dass die Verkettung innerhalb jeder Gruppe durchgeführt wird, die durch die Spalte „question_id“ definiert ist.
Es ist zu beachten, dass die resultierende verkettete Zeichenfolge die maximale Längenbeschränkung für einen VARCHAR2-Datentyp überschreiten kann ( 4000 Zeichen). Um dieses potenzielle Problem zu beheben, hat Oracle 12cR2 die Option ON OVERFLOW TRUNCATE/ERROR eingeführt. Durch die Einbindung dieser Option können Sie angeben, ob die Zeichenfolge abgeschnitten oder ein Fehler ausgegeben werden soll, wenn die Längenbeschränkung überschritten wird.
Das obige ist der detaillierte Inhalt vonWie kann ich in Oracle SQL mehrere Zeilen effizient zu einer einzigen Zeile verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!