Oracle: Combinar vários resultados em uma subconsulta em um único valor separados por vírgulas [duplicado]
-
20-08-2019 - |
Pergunta
Esta questão já tem uma resposta aqui:
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.
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