Tôi sẽ sử dụng listagg()
trong một truy vấn con:
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;
CHỈNH SỬA:
Truy vấn trên thực hiện tổng hợp trước khi kết hợp, vì vậy nó có thể sử dụng t1.*
. Bạn cũng có thể làm điều đó sau khi tham gia:
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;
Biểu mẫu này khiến việc thêm các cột bổ sung vào select
khó hơn , nhưng bạn có thể tổng hợp theo bất kỳ thứ gì bạn thích.