17,090
社区成员
发帖
与我相关
我的任务
分享
--table struct
SQL> desc A;
名称 是否为空? 类型
----------------------------------------------------- -------- ------------------------------------
AID NOT NULL NUMBER(3)
NAME CHAR(4)
SQL> desc B;
名称 是否为空? 类型
----------------------------------------------------- -------- ------------------------------------
BID NOT NULL NUMBER(3)
AID NUMBER(3)
NAME CHAR(4)
TEXT CHAR(4)
--Datas
SQL> SELECT * FROM A;
AID NAME
---------- ----
1 a
2 b
3 c
SQL> SELECT * FROM B;
BID AID NAME TEXT
---------- ---------- ---- ----
1 1 x a1
2 1 y a2
3 1 z a3
4 2 r a4
5 3 s a5
select m.aid,m.name,substr((sys_connect_by_path(m.text,',')),2) text
from
(
select A.aid,A.NAME,B.text,row_number() over(partition by A.name order by 1) rn,count(A.name) over(partition by A.name order by 1) num_rank from A left join B on A.AID=B.AID
)m
where m.rn=m.num_rank
start with rn=1
connect by rn-1=prior rn and m.NAME=prior m.Name
--RESULT:
AID NAME TEXT
1 a a1 ,a2 ,a3
2 b a4
3 c a5