Oracle: Combinar vários resultados em uma subconsulta em um único valor separados por vírgulas [duplicado]

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

Pergunta

Eu estou tentando converter uma subconsulta único de colunas em uma lista datilografada-VARCHAR separados por comando de valores.

Este é idêntico ao este pergunta , mas para Oracle em vez de SQL Server ou MySQL.

Foi útil?

Solução

Há um excelente resumo das técnicas de corda de agregação disponíveis em site da Tim Hall.

Outras dicas

Eu encontrei este que parece funcionar. Pensamentos?

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 introduziu LISTAGG , que WM_CONCAT ao contrário está documentado. Nós não estamos em 11.2 ainda, então usamos uma função de agregação personalizado.

Aqui está um blog que mostra uma consulta Oracle para trabalho como GROUP_CONCAT() do MySQL:

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

SELECT NUM_DEP, wm_concat (ename) como empregados FROM emp GROUP BY DEPTNO;

Referência: http://forums.oracle.com/forums /thread.jspa?messageID=1186901�

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top