Я разделяю разделенную запятыми строку на строки в моем предложении with «data», затем следует объединение со второй таблицей и группировка по значениям id.
create table t(id int, refparts varchar2(100))
insert into t values(100,'1,2');
insert into t values(101,'1');
create table t2(part_id int, amount int);
insert into t2 values(1,50);
insert into t2 values(2,25);
with data
as (
select a.id
,rtrim(
substr(a.refparts|| ','
,instr(','||a.refparts||',',',',1,lvl)
,instr(','||a.refparts||',',',',1,lvl+1) - instr(','||a.refparts||',',',',1,lvl)
)
,',') as col2
from t a
join (select level as lvl
from dual
connect by level<=10) b
on b.lvl <=length(a.refparts) - length(replace(a.refparts,',','')) + 1
)
select a.id
,sum(b.amount) as summed_val
from data a
join t2 b
on a.col2=b.part_id
group by a.id