Бих използвал listagg()
в подзаявка:
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;
РЕДАКТИРАНЕ:
Горната заявка извършва агрегирането преди присъединяването, така че може да използва t1.*
. Можете да го направите и след присъединяването:
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;
Тази форма прави по-трудно добавянето на допълнителни колони към select
, но можете да обобщавате по каквото пожелаете.