Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

nhận một số giá trị duy nhất mà không cần phân tách các giá trị thuộc cùng một khối giá trị

Đâ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?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi khi sử dụng oracle.dataaccess.dll

  2. Hàm NLS_COLLATION_ID () trong Oracle

  3. Cách cập nhật bảng trong oracle

  4. Làm thế nào để truy cập cấu trúc và lấy danh sách cột, các kiểu dữ liệu của con trỏ?

  5. cách chèn ngày hiện tại vào trường DATE ở định dạng dd / mm / yyyy trong oracle