Questa non è una risposta completa, ma non voglio scrivere molte domande nei commenti.
Il tuo obiettivo principale è inviare informazioni alle persone ed evitare la situazione in cui una persona riceve due volte il fax. Quindi per prima cosa hai bisogno di un elenco di destinatari univoci, come questo:
select distinct otherid
from NR_PVO_120
Se una persona ha due numeri di fax, devi decidere quale scegliere:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by <choosing rule>) rn
from NR_PVO_120)
where rn = 1
(Tutto questo hai nelle risposte alla domanda precedente)
Se prendi questo elenco di numeri di fax, tutti i tuoi destinatari riceveranno il fax e solo un fax per ogni persona. Ma alcuni numeri di fax non verranno utilizzati. Li puoi trovare facilmente:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by <choosing rule>) rn
from NR_PVO_120)
where rn > 1
Se invii un fax a uno di questi numeri, alcune persone ricevono un fax due volte.
L'inglese non è la mia lingua madre, quindi non capisco cosa intendi quando dici "senza dividere i numeri di fax". Come posso vedere nella tua domanda, forse è necessario utilizzare l'ordine dei numeri di fax nella tua domanda come priorità del numero (il numero più alto si trova nella tabella - maggiore è la probabilità di usarlo). Sembra che tu possa usare quanto segue:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by row) rn
from NR_PVO_120)
where rn = 1
qui row
in order by
la clausola è una Row
dalla tua tabella di esempio.
UPD
P. S. Sulla mia ultima domanda:abbiamo una tabella con un certo ordine e l'ordine è importante. Prendiamo le righe della tabella riga per riga. Prendi la prima riga e inserisci il suo otherid
e fax
alla tabella dei risultati. Quindi prendi la riga successiva. Se contiene un altro fax
numero e otherid
, lo prendiamo, se otherid
già nella nostra tabella dei risultati, lo saltiamo. Hai chiesto questo algoritmo?