Oracle: Combinez plusieurs résultats dans une sous-requête en une seule valeur séparée par des virgules [duplicate]
-
20-08-2019 - |
Question
Cette question a déjà une réponse ici:
J'essaie de convertir une sous-requête à une colonne en une liste de valeurs VARCHAR
séparées par une commande.
Ceci est identique à ceci question , mais pour Oracle plutôt que SQL Server ou MySQL.
La solution
Il existe un excellent résumé des techniques de regroupement disponibles sur Le site de Tim Hall.
Autres conseils
J'ai trouvé cela qui semble fonctionner. Des pensées?
SELECT SUBSTR (c, 2) concatenated
FROM (SELECT SYS_CONNECT_BY_PATH ( myfield, ',') c, r
FROM (SELECT ROWNUM ID, myfield,
RANK () OVER (ORDER BY ROWID DESC) r
FROM mytable
ORDER BY myfield)
START WITH ID = 1
CONNECT BY PRIOR ID = ID - 1)
WHERE r = 1;
11.2 a introduit LISTAGG , qui contrairement à WM_CONCAT est documenté. Nous ne sommes pas encore sur 11.2, nous utilisons donc une fonction d'agrégat personnalisée.
Voici un blog montrant une requête Oracle comme celle de MySQL GROUP_CONCAT()
:
http://halisway.blogspot.com/2006 /08/oracle-groupconcat-updated-again.html
SELECT deptno, wm_concat (ename) AS employés DE emp GROUP BY deptno;
Référence: http://forums.oracle. com / forums / thread.jspa? messageID = 1186901 & amp; # 1186901