How to join two table without getting duplicate from both left & right table in Oracle
Although you can JOIN the 2 tables ON their IDs, you'll probably need to introduce &quot;artificial&quot; rownumbers (as it were), and use these in your join, too.
TABLES and data
select * from test1 ;
+------+----+-----+
|ID    |TYPE|OTHER|
+------+----+-----+
|123456|0   |2    |
|123456|1   |6    |
|123456|2   |4    |
|987654|0   |7    |
|987654|1   |8    |
|456789|0   |6    |
|456789|1   |16   |
+------+----+-----+


select * from test2 ;
+------+-----+-----+
|ID    |VALUE|OTHER|
+------+-----+-----+
|123456|5    |12   |
|123456|10   |17   |
+------+-----+-----+

SELECT and ROW_NUMBER()
  select id, type, other
  , row_number() over ( partition by id order by type ) rn_
  from test1 ;

+------+----+-----+---+
|ID    |TYPE|OTHER|RN_|
+------+----+-----+---+
|123456|0   |2    |1  |
|123456|1   |6    |2  |
|123456|2   |4    |3  |
|456789|0   |6    |1  |
|456789|1   |16   |2  |
|987654|0   |7    |1  |
|987654|1   |8    |2  |
+------+----+-----+---+

  select id, value, other
  , row_number() over ( partition by id order by value ) rn_
  from test2 ;

+------+-----+-----+---+
|ID    |VALUE|OTHER|RN_|
+------+-----+-----+---+
|123456|5    |12   |1  |
|123456|10   |17   |2  |
+------+-----+-----+---+

If you now JOIN these 2 result sets, you may be a step closer to the solution that you are after.
select T1.id, T1.type, T1.other, T2.value
from (
  select id, type, other
  , row_number() over ( partition by id order by type ) rn_
  from test1
) T1 left join (
  select id, value, other
  , row_number() over ( partition by id order by value ) rn_
  from test2
) T2 on T1.id = T2.id and T1.rn_ = T2.rn_ ;

+------+----+-----+-----+
|ID    |TYPE|OTHER|VALUE|
+------+----+-----+-----+
|123456|0   |2    |5    |
|123456|1   |6    |10   |
|456789|0   |6    |NULL |
|456789|1   |16   |NULL |
|987654|0   |7    |NULL |
|987654|1   |8    |NULL |
|123456|2   |4    |NULL |
+------+----+-----+-----+

Now you just need to eliminate the rows whose IDs are not in Table2.
-- final query
select T1.id, T1.type, T1.other, T2.value
from (
  select id, type, other
  , row_number() over ( partition by id order by type ) rn_
  from test1
) T1 left join (
  select id, value, other
  , row_number() over ( partition by id order by value ) rn_
  from test2
) T2 on T1.id = T2.id and T1.rn_ = T2.rn_
where exists ( select null from test2 where id = T1.id )
order by 1, 2 ;

+------+----+-----+-----+
|ID    |TYPE|OTHER|VALUE|
+------+----+-----+-----+
|123456|0   |2    |5    |
|123456|1   |6    |10   |
|123456|2   |4    |NULL |
+------+----+-----+-----+

DBfiddle (Oracle 18c)  SQLfiddle (Oracle 11g)