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

Oracle GROUP_CONCAT()-Äquivalent

Einige RDBMSs haben einen GROUP_CONCAT() Funktion, mit der Sie eine Abfragespalte als eine durch Trennzeichen getrennte Liste zurückgeben können (z. B. eine durch Kommas getrennte Liste). MySQL und MariaDB sind zwei, die eine solche Funktion haben.

PostgreSQL und SQL Server haben ähnliche Funktionen namens STRING_AGG() .

Oracle hingegen hat die LISTAGG() Funktion, die so ziemlich dasselbe macht (und vielleicht noch mehr).

Man könnte also sagen, dass LISTAGG() ist Oracles GROUP_CONCAT() Äquivalent.

Beispiel

Hier ist ein einfaches Beispiel, um zu demonstrieren, wie Oracles LISTAGG() Funktion funktioniert:

SELECT LISTAGG(region_name, ',') 
FROM regions;

Ergebnis:

                      LISTAGG(REGION_NAME,',') 
______________________________________________ 
Europe,Americas,Asia,Middle East and Africa   

In diesem Fall habe ich angegeben, dass das Trennzeichen ein Komma ist.

Folgendes passiert, wenn wir die Abfrage einfach ohne LISTAGG() ausführen Funktion:

SELECT region_name 
FROM regions;

Ergebnis:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa  

Wir erhalten vier Zeilen, jede mit einem separaten Wert, anstatt einer kommagetrennten Zeile, die alle Werte enthält.

Die LISTAGG() Funktion ermöglicht es uns auch, die Ergebnisse zu ordnen, nur eindeutige Werte zurückzugeben (über die DISTINCT Klausel) und mehr.

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