select NVL(T1.id,T2.id) id,T1.vdef2,T1.vdef3, T2.vdef5, T2.vdef6 from( select id,vdef2,vdef3,row_number()over(partition by id,vdef2 order by vdef3) rn from a1) T1 full outer join ( select id,vdef5,vdef6,row_number()over(partition by id,vdef5 order by vdef6) rn from a2) T2 on T1.id = T2.id and T1.vdef2 = T2.vdef5 AND T1.RN=T2.RN order by NVL(T1.id,T2.id),NVL(T1.vdef2,T2.vdef5),NVL(T1.rn,T2.rn)
select nvl(a1.id,a2.id), a1.vdef2, a1.vdef3, a2.vdef5, a2.vdef6 from a1 full outer join a2 on a1.id = a2.id and a1.vdef2 = a2.vdef5 and a1.vdef3 = a2.vdef6 order by nvl(a1.id,a2.id), a1.vdef2, a1.vdef3
from(
select id,vdef2,vdef3,row_number()over(partition by id,vdef2 order by vdef3) rn
from a1) T1 full outer join (
select id,vdef5,vdef6,row_number()over(partition by id,vdef5 order by vdef6) rn
from a2) T2
on T1.id = T2.id
and T1.vdef2 = T2.vdef5
AND T1.RN=T2.RN
order by NVL(T1.id,T2.id),NVL(T1.vdef2,T2.vdef5),NVL(T1.rn,T2.rn)
from a1
full outer join a2
on a1.id = a2.id
and a1.vdef2 = a2.vdef5
and a1.vdef3 = a2.vdef6
order by nvl(a1.id,a2.id), a1.vdef2, a1.vdef3