Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Abfrageergebnisse als kommagetrennte Liste in Oracle zurückgeben

In Oracle können wir die LISTAGG() verwenden Funktion, um unsere Abfrageergebnisse in eine kommagetrennte Liste umzuwandeln.

Anstatt also jeden Wert in einer separaten Zeile auszugeben, werden alle Werte in einer einzigen Zeile ausgegeben, getrennt durch ein Komma (oder ein anderes Trennzeichen unserer Wahl).

Beispiel

Stellen Sie sich vor, wir führen die folgende Abfrage aus:

SELECT last_name 
FROM employees
WHERE job_id = 'IT_PROG';

Ergebnis:

   LAST_NAME 
____________ 
Hunold       
Ernst        
Austin       
Pataballa    
Lorentz      

Diese Abfrage hat fünf Zeilen zurückgegeben, jede mit einem anderen Wert.

Wenn wir möchten, dass diese Werte in einer einzelnen Zeile ausgegeben werden, können wir Folgendes tun:

SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

Ergebnis:

                      LISTAGG(LAST_NAME,',') 
____________________________________________ 
Hunold, Ernst, Austin, Pataballa, Lorentz    

Wir haben lediglich den Spaltennamen an LISTAGG() übergeben Funktion sowie unser gewähltes Trennzeichen.

Wir können ein anderes Trennzeichen verwenden oder dieses Argument ganz weglassen, sodass alle Elemente verkettet werden.

Die Funktion akzeptiert auch einen DISTINCT -Klausel (um doppelte Werte zu entfernen) und ein ORDER BY -Klausel (um die Ausgabe der Funktion zu ordnen).

Die Funktion kann auch beim Gruppieren von Abfrageergebnissen sehr praktisch sein.

Siehe LISTAGG() Funktion in Oracle für weitere Beispiele.