Oracle
 sql >> Base de données >  >> RDS >> Oracle

Renvoyer les résultats de la requête sous forme de liste séparée par des virgules dans Oracle

Dans Oracle, nous pouvons utiliser le LISTAGG() fonction pour convertir nos résultats de requête en une liste séparée par des virgules.

Ainsi, au lieu que chaque valeur soit sortie dans une ligne séparée, toutes les valeurs sont sorties dans une seule ligne, séparées par une virgule (ou un autre délimiteur de notre choix).

Exemple

Imaginons que nous lancions la requête suivante :

SELECT last_name 
FROM employees
WHERE job_id = 'IT_PROG';

Résultat :

   LAST_NAME 
____________ 
Hunold       
Ernst        
Austin       
Pataballa    
Lorentz      

Cette requête a renvoyé cinq lignes, chacune avec une valeur différente.

Si nous voulons que ces valeurs soient affichées sur une seule ligne, nous pouvons procéder comme suit :

SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

Résultat :

                      LISTAGG(LAST_NAME,',') 
____________________________________________ 
Hunold, Ernst, Austin, Pataballa, Lorentz    

Tout ce que nous avons fait était de passer le nom de la colonne au LISTAGG() fonction, ainsi que notre délimiteur choisi.

Nous pouvons utiliser un délimiteur différent ou omettre complètement cet argument afin que tous les éléments soient concaténés.

La fonction accepte également un DISTINCT clause (pour supprimer les valeurs en double), et un ORDER BY clause (pour ordonner la sortie de la fonction).

La fonction peut également être très pratique lors du regroupement des résultats de la requête.

Voir LISTAGG() Fonction dans Oracle pour plus d'exemples.