Oracle
 sql >> Database >  >> RDS >> Oracle

Equivalente a Oracle GROUP_CONCAT()

Alcuni RDBMS hanno un GROUP_CONCAT() funzione che consente di restituire una colonna di query come un elenco delimitato (ad esempio, un elenco separato da virgole). MySQL e MariaDB sono due che hanno una tale funzione.

PostgreSQL e SQL Server hanno funzioni simili chiamate STRING_AGG() .

Oracle, d'altra parte, ha il LISTAGG() funzione che fa più o meno la stessa cosa (e forse di più).

Quindi potresti dire che LISTAGG() è il GROUP_CONCAT() di Oracle equivalente.

Esempio

Ecco un esempio di base per dimostrare come LISTAGG() di Oracle la funzione funziona:

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

Risultato:

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

In questo caso, ho specificato che il separatore è una virgola.

Ecco cosa succede quando eseguiamo la query senza LISTAGG() funzione:

SELECT region_name 
FROM regions;

Risultato:

              REGION_NAME 
_________________________ 
Europe                    
Americas                  
Asia                      
Middle East and Africa  

Otteniamo quattro righe, ciascuna con un valore separato, invece di una riga separata da virgole che contiene tutti i valori.

Il LISTAGG() La funzione ci consente anche di ordinare i risultati, restituire solo valori univoci (tramite il DISTINCT clausola) e altro.

Vedi LISTAGG() Funzione in Oracle per ulteriori esempi.