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

Restituisci i risultati della query come un elenco separato da virgole in Oracle

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.