Đây không phải là câu trả lời đầy đủ, nhưng tôi không muốn viết nhiều truy vấn trong các bình luận.
Mục tiêu chính của bạn là gửi thông tin đến mọi người và tránh trường hợp một người nhận được fax hai lần. Vì vậy, trước tiên bạn cần một danh sách những người nhận duy nhất, như sau:
select distinct otherid
from NR_PVO_120
Nếu một người có hai số fax, bạn cần quyết định chọn số nào:
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
(Tất cả những điều này bạn có trong câu trả lời của câu hỏi trước)
Nếu bạn lấy danh sách các số fax này, tất cả những người nhận của bạn sẽ nhận được bản fax và chỉ một bản fax cho mỗi người. Nhưng một số số fax sẽ không được sử dụng. Bạn có thể dễ dàng tìm thấy chúng:
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
Nếu bạn gửi fax đến bất kỳ số nào trong số này, một số người sẽ nhận được một fax hai lần.
Tiếng Anh không phải là ngôn ngữ mẹ đẻ của tôi, vì vậy tôi không hiểu ý của bạn khi nói "không chia nhỏ số fax". Như tôi có thể thấy trong câu hỏi của bạn, có thể bạn cần sử dụng thứ tự số fax trong câu hỏi của mình làm ưu tiên số (số cao hơn nằm trong bảng - xác suất sử dụng nó cao hơn). Có vẻ như bạn có thể sử dụng sau:
select otherid, fax
from (select otherid, fax, row_number() over (partition by otherid order by row) rn
from NR_PVO_120)
where rn = 1
đây row
theo thứ tự order by
mệnh đề là một Row
từ bảng mẫu của bạn.
CẬP NHẬT
P. S. Về truy vấn cuối cùng của tôi:chúng tôi có một bảng với thứ tự nhất định và thứ tự là quan trọng. Chúng tôi lấy từng hàng của bảng từng dòng. Lấy hàng đầu tiên và đặt otherid
của nó và fax
vào bảng kết quả. Sau đó lấy hàng tiếp theo. Nếu nó chứa một fax
khác số và otherid
, chúng tôi chấp nhận nó, nếu otherid
đã có trong bảng kết quả của chúng tôi, chúng tôi bỏ qua nó. Bạn có hỏi thuật toán này không?