Немного странное требование ... потенциально свидетельствует о проблеме дизайна.
with your_data (STAFFNO,NAME,DESGN,DEPTT,SPOUSE_STAFFNO,SPOUSE_NAME,SPOUSE_DESGN,SPOUSE_DEPTT)
as
(select 111111, 'AAA','AM', 'HR',999999,'PPP','JM', 'FIN' from dual union all
select 222222, 'BBB','DM','MKTG',888888,'QQQ','AM', 'HR' from dual union all
select 333333, 'CCC','SM', 'FIN',777777,'RRR','DM', 'FIN' from dual union all
select 999999, 'PPP','JM', 'FIN',111111,'AAA','AM', 'HR' from dual union all
select 888888, 'QQQ','AM', 'HR',222222,'BBB','DM','MTKG' from dual union all
select 777777, 'RRR','DM', 'FIN',333333,'CCC','SM', 'FIN' from dual)
select *
from (
select t1.staffno, t1.name, t1.desgn, t1.deptt, t2.staffno spouse_staffno, t2.name spouse_name, t2.desgn spouse_degn, t2.deptt spouse_deptt
, row_number() over (partition by (coalesce(least(t1.staffno,t2.staffno),t1.staffno)) order by t1.staffno) rn
from your_data t1
, your_data t2
where t2.staffno (+) = t1.spouse_staffno)
where rn = 1;
STAFFNO NAM DE DEPT SPOUSE_STAFFNO SPO SP SPOU RN
---------- --- -- ---- -------------- --- -- ---- ----------
111111 AAA AM HR 999999 PPP JM FIN 1
222222 BBB DM MKTG 888888 QQQ AM HR 1
333333 CCC SM FIN 777777 RRR DM FIN 1