Oracle
 sql >> Base de données >  >> RDS >> Oracle

Sélectionnez toutes les colonnes du tableau 1 et une colonne du tableau 2 qui est regroupée par ?

J'utiliserais listagg() dans une sous-requête :

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;

MODIFIER :

La requête ci-dessus effectue l'agrégation avant la jointure, elle peut donc utiliser t1.* . Vous pouvez également le faire après la jointure :

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;

Ce formulaire rend plus difficile l'ajout de colonnes supplémentaires au select , mais vous pouvez agréger selon ce que vous voulez.