In Oracle, possiamo usare LISTAGG()
funzione per convertire i risultati delle nostre query in un elenco separato da virgole.
Quindi, invece di emettere ogni valore in una riga separata, tutti i valori vengono emessi in una singola riga, separati da una virgola (o da qualche altro delimitatore di nostra scelta).
Esempio
Immagina di eseguire la seguente query:
SELECT last_name
FROM employees
WHERE job_id = 'IT_PROG';
Risultato:
LAST_NAME ____________ Hunold Ernst Austin Pataballa Lorentz
Quella query ha restituito cinque righe, ciascuna con un valore diverso.
Se vogliamo che questi valori vengano emessi su una singola riga, possiamo fare quanto segue:
SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';
Risultato:
LISTAGG(LAST_NAME,',') ____________________________________________ Hunold, Ernst, Austin, Pataballa, Lorentz
Tutto ciò che abbiamo fatto è stato passare il nome della colonna a LISTAGG()
funzione, così come il nostro delimitatore scelto.
Possiamo usare un delimitatore diverso oppure omettere del tutto quell'argomento in modo che tutti gli elementi siano concatenati.
La funzione accetta anche un DISTINCT
clausola (per rimuovere i valori duplicati) e un ORDER BY
clausola (per ordinare l'output della funzione).
La funzione può anche essere molto utile quando si raggruppano i risultati della query.
Vedi LISTAGG()
Funzione in Oracle per ulteriori esempi.