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.