Concatenar e agrupar várias linhas no Oracle [duplicado]
Duplicata Possível:
como recuperar dois dados de colunas no formato A, B no Oracle
Suponha que eu tenha uma tabela como esta:
NAME GROUP_NAME
name1 groupA
name2 groupB
name5 groupC
name4 groupA
name3 groupC
Eu gostaria de ter um resultado como este:
GROUP_NAME NAMES
groupA name1,name4
groupB name2
groupC name3,name5
Se houvesse apenas uma coluna na tabela, eu poderia concatenar os registros fazendo o seguinte, mas com o agrupamento no contexto, eu realmente não tenho muita ideia.
Concatatando uma tabela de colunas:
SELECT names
FROM (SELECT SYS_CONNECT_BY_PATH(names,' ') names, level
FROM name_table
START WITH names = (SELECT names FROM name_table WHERE rownum = 1)
CONNECT BY PRIOR names < names
ORDER BY level DESC)
WHERE rownum = 1
Atualizada:Agora tenho uma solução usandoLISTAGG
:
SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP BY group_name
Ainda interessado em uma solução mais "geral" para casos em queLISTAGG
não está disponível.