Oracle: Combinez plusieurs résultats dans une sous-requête en une seule valeur séparée par des virgules [duplicate]

StackOverflow https://stackoverflow.com/questions/492563

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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top