То, что вы хотите, это полное внешнее соединение:
with
first_table (itmnum, qty1) as
( select 1, 10 from dual union all
select 2, 5 from dual union all
select 3, 7 from dual union all
select 5, 9 from dual)
, second_table (itmnum, qty2) as
( select 2, 3 from dual union all
select 3, 9 from dual union all
select 4, 12 from dual )
-- start here
select coalesce(f.itmnum,s.itmnum) as itmnum
, f.qty1, s.qty2
from first_table f
full outer join second_table s
on s.itmnum = f.itmnum
order by 1;
ITMNUM QTY1 QTY2
---------- ---------- ----------
1 10
2 5 3
3 7 9
4 12
5 9
(здесь я нарушаю свое собственное правило, добавляя необязательное ключевое слово outer
, которое обычно пропускаю для внутренних и внешних объединений, но полные объединения достаточно редки, и я думаю, что без него может быть сложнее).