Esta não é uma resposta completa, mas não quero escrever muitas perguntas nos comentários.
Seu principal objetivo é enviar informações às pessoas e evitar a situação em que uma pessoa recebe fax duas vezes. Então você primeiro precisa de uma lista de destinatários exclusivos, como esta:
select distinct otherid
from NR_PVO_120
Se uma pessoa tiver dois números de fax, você precisa decidir qual deles escolher:
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
(Tudo isso você tem nas respostas da pergunta anterior)
Se você pegar esta lista de números de fax, todos os seus destinatários receberão o fax, e apenas um fax para cada pessoa. Mas alguns números de fax não serão usados. Você pode encontrá-los 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 você enviar fax para qualquer um desses números, algumas pessoas recebem um fax duas vezes.
Inglês não é minha língua nativa, então não entendo o que você quer dizer quando diz "sem dividir números de fax". Como posso ver na sua pergunta, possivelmente você precisa usar a ordem dos números de fax na sua pergunta como prioridade numérica (o número mais alto está situado na tabela - maior a probabilidade de usá-lo). Parece que você pode usar o seguinte:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by row) rn
from NR_PVO_120)
where rn = 1
aqui
row
em order by
cláusula é uma Row
da sua tabela de exemplo. UPD
P. S. Sobre minha última consulta:temos uma tabela com determinada ordem, e a ordem é importante. Pegamos linhas da tabela linha por linha. Pegue a primeira linha e coloque seu
otherid
e fax
para a tabela de resultados. Em seguida, pegue a próxima linha. Se contiver outro fax
número e otherid
, nós o consideramos, se otherid
já em nossa tabela de resultados, nós a ignoramos. Você perguntou esse algoritmo?