create table Table1 (MSGID varchar2(100));
insert into Table1 values ('1,2,3');
insert into Table1 values ('2,3');
insert into Table1 values ('4');
insert into Table1 values (null);
insert into Table1 values (null);
create table Table2 (MID varchar2(100), MSGDESC varchar2(100));
insert into Table2 values ('1','ONE');
insert into Table2 values ('2','TWO');
insert into Table2 values ('3','THREE');
insert into Table2 values ('4','FOUR');
select
msgid as xcol,
"DESC",
col1, col2, ..., col12
from
Table1
left join (
select
msgid,
wm_concat(msgdesc) as "DESC"
from
(
select
msgid,
msgdesc
from
(select distinct msgid from Table1 where ...)
cross join (
select level as occ from dual connect by level <= 100)
)
left join Table2
on mid = regexp_substr(msgid, '[^,]+', 1, occ)
where
occ <= regexp_count(msgid, ',') + 1
order by msgid, occ
)
group by msgid
) using (msgid)
你嘗試過什麼?這看起來像是一個兩步過程;瞭解如何將表1中的CSV ID作爲單獨的行對待(在此搜索以獲取方式),然後將結果加入到表2中。 –
嗨,根據您的建議,我在發佈此項之前完成了相同的任務但我無法得到這個。你可以評論它嗎?或者你可以發佈代碼,我如何得到這個結果。這是非常迫切的要求。請給我提供一步步的過程 – Prasad