Toto není úplná odpověď, ale nechci do komentářů psát mnoho dotazů.
Vaším hlavním cílem je posílat informace lidem a vyhnout se situaci, kdy jeden člověk obdrží fax dvakrát. Nejprve tedy potřebujete seznam jedinečných příjemců, jako je tento:
select distinct otherid
from NR_PVO_120
Pokud má jedna osoba dvě faxová čísla, musíte se rozhodnout, které vybrat:
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
(To vše máte v odpovědích na předchozí otázku)
Pokud si vezmete tento seznam faxových čísel, všichni vaši příjemci obdrží fax a pouze jeden fax pro každou osobu. Některá faxová čísla však nebudou použita. Můžete je snadno najít:
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
Pokud pošlete fax na kterékoli z těchto čísel, někteří lidé dostanou jeden fax dvakrát.
Angličtina není můj rodný jazyk, takže nerozumím, co máte na mysli, když říkáte „bez rozdělení faxových čísel“. Jak vidím ve Vašem dotazu, je možné, že budete muset jako prioritu čísla použít pořadí faxových čísel ve Vašem dotazu (čím vyšší číslo je v tabulce, tím vyšší pravděpodobnost jeho použití). Zdá se, že můžete použít následující:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by row) rn
from NR_PVO_120)
where rn = 1
zde row
v order by
klauzule je Row
z vaší ukázkové tabulky.
UPD
P. S. K mému poslednímu dotazu:máme tabulku s určitým pořadím a pořadí je důležité. Řádky tabulky bereme řádek po řádku. Vezměte první řádek a vložte jeho otherid
a fax
do výsledkové tabulky. Pak vezměte další řádek. Pokud obsahuje další fax
číslo a otherid
, bereme to, pokud otherid
již v naší výsledkové tabulce, přeskočíme. Ptali jste se tohoto algoritmu?