Oracle: combina più risultati in una sottoquery in un singolo valore separato da virgola [duplicato]

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

Domanda

    

Questa domanda ha già una risposta qui:

         

Sto cercando di convertire una sottoquery a colonna singola in un elenco di valori VARCHAR separato da comandi.

Questo è identico a questo domanda , ma per Oracle anziché per SQL Server o MySQL.

È stato utile?

Soluzione

Esiste un eccellente riepilogo delle tecniche di aggregazione delle stringhe disponibili su Il sito di Tim Hall.

Altri suggerimenti

Ho trovato questo che sembra funzionare. Pensieri?

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 introdotto LISTAGG , che a differenza di WM_CONCAT è documentato. Non siamo ancora in 11.2, quindi utilizziamo una funzione aggregata personalizzata.

Ecco un blog che mostra una query Oracle che funziona come MySQL GROUP_CONCAT():

http://halisway.blogspot.com/2006 /08/oracle-groupconcat-updated-again.html

SELECT deptno, wm_concat (ename) dipendenti AS DA emp GROUP BY deptno;

Riferimento: http://forums.oracle. com / forum / thread.jspa? messageID = 1186901 & amp; # 1186901

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top