Eu usaria
listagg()
em uma subconsulta:select t1.*, xmlagg
from table1 t1 join
(select name2, listagg(mother_name, ',') within group (order by mother_name) as xmlagg
from table2 t2
group by name2
) t2
on t1.name1 = t2.name2;
EDITAR:
A consulta acima faz a agregação antes da junção, então ela pode usar
t1.*
. Você também pode fazer isso após a junção:select t1.name, listagg(mother_name, ',') within group (order by mother_name)
from table1 t1 join
table2 t2
on t1.name1 = t2.name2
group by t1.name;
Este formulário torna mais difícil adicionar colunas adicionais ao
select
, mas você pode agregar o que quiser.