Vì các câu trả lời được liên kết trong nhận xét không cung cấp cho tôi giải pháp phù hợp, nên tôi vẫn sẽ đăng nó.
Tôi sẽ chỉ sử dụng table_b
với dữ liệu giả để hiển thị khái niệm, bạn có thể dễ dàng thêm tham gia của mình, v.v.:
with table_b as ( -- dummy data
select 'name'||mod(level,3) name
,mod(level,3) id
from dual
connect by level < 10
union all
select 'name'||mod(level,2) name
,mod(level,3) id
from dual
connect by level < 10
)
select id
,RTRIM (
XMLAGG (
XMLELEMENT (E,XMLATTRIBUTES (name|| ',' AS "Seg")
)
ORDER BY name ASC
).EXTRACT ('./E[not(@Seg = preceding-sibling::E/@Seg)]/@Seg'),
','
) AS "Product Name"
,LISTAGG(b.name, ',') WITHIN GROUP (ORDER BY b.name) AS "Product Name with dups"
from table_b b
group by id;
(Ý tưởng được lấy từ https://forums.oracle.com/forums/thread.jspa?messageID=9634767&tstart=0#9943367)