To nie jest pełna odpowiedź, ale nie chcę pisać wielu zapytań w komentarzach.
Twoim głównym celem jest wysyłanie informacji do ludzi i uniknięcie sytuacji, w której jedna osoba otrzyma faks dwukrotnie. Więc najpierw potrzebujesz listy unikalnych odbiorców, takiej jak ta:
select distinct otherid
from NR_PVO_120
Jeśli jedna osoba ma dwa numery faksu, musisz zdecydować, który wybrać:
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
(Wszystko to masz w odpowiedziach na poprzednie pytanie)
Jeśli weźmiesz tę listę numerów faksów, wszyscy odbiorcy otrzymają faks i tylko jeden faks na każdą osobę. Jednak niektóre numery faksów nie będą używane. Możesz je łatwo znaleźć:
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
Jeśli wyślesz faks na którykolwiek z tych numerów, niektórzy otrzymają jeden faks dwa razy.
Angielski nie jest moim językiem ojczystym, więc nie rozumiem, co masz na myśli, mówiąc „bez dzielenia numerów faksów”. Jak widzę w Twoim pytaniu, być może musisz użyć kolejności numerów faksów w pytaniu jako priorytetu (im wyższy numer znajduje się w tabeli - tym większe prawdopodobieństwo, że go użyjesz). Wygląda na to, że możesz użyć następujących:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by row) rn
from NR_PVO_120)
where rn = 1
tutaj row
w order by
klauzula jest Row
z przykładowej tabeli.
UPD
S. S. O moim ostatnim zapytaniu:mamy tabelę z określoną kolejnością, a kolejność jest ważna. Bierzemy wiersze tabeli wiersz po wierszu. Weź pierwszy wiersz i umieść jego otherid
i fax
do tabeli wyników. Następnie weź następny rząd. Jeśli zawiera inny fax
numer i otherid
, bierzemy to, jeśli otherid
już w naszej tabeli wyników pomijamy to. Czy zadałeś ten algorytm?