Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Selecione todas as colunas da tabela 1 e uma coluna da tabela dois que está agrupada por?


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.