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.