Oracle
 sql >> Database >  >> RDS >> Oracle

Seleziona tutte le colonne dalla tabella 1 e una colonna dalla tabella due che è raggruppata per?

Userei listagg() in una sottoquery:

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;

MODIFICA:

La query precedente esegue l'aggregazione prima del join, quindi può utilizzare t1.* . Puoi farlo anche dopo il join:

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;

Questo modulo rende più difficile aggiungere colonne aggiuntive a select , ma puoi aggregare in base a qualsiasi cosa tu voglia.