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.