Вы можете использовать слияние для него следующим образом:
SQL> create table my_tab as
2 SELECT 100 as Mat_ID, 20 as Prod_ID , 50 as QTY from dual union all
3 SELECT 101, 20, 60 from dual union all
4 SELECT 100, 21, 0 from dual union all
5 SELECT 101, 21, 2 from dual union all
6 SELECT 100, 22, 0 from dual union all
7 SELECT 101, 22, 1 from dual union all
8 SELECT 101, 23, 8 from dual ;
Table created.
SQL> merge into my_tab m
2 using (select * from my_tab
3 where PROD_ID = 20) t
4 on (m.Mat_ID = t.Mat_ID and m.PROD_ID <> 20)
5 when matched then
6 update set m.QTY = t.qty;
5 rows merged.
SQL> select * from my_tab;
MAT_ID PROD_ID QTY
---------- ---------- ----------
100 20 50
101 20 60
100 21 50
101 21 60
100 22 50
101 22 60
101 23 60
7 rows selected.
SQL>
Ура !!