Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

dapatkan sejumlah nilai unik tanpa memisahkan nilai yang termasuk dalam blok nilai yang sama

Ini bukan jawaban lengkap, tetapi saya tidak ingin menulis banyak pertanyaan di komentar.
Tujuan utama Anda adalah mengirim informasi kepada orang-orang, dan untuk menghindari situasi ketika satu orang menerima faks dua kali. Jadi pertama-tama Anda memerlukan daftar penerima unik, seperti ini:

select distinct otherid
  from NR_PVO_120

Jika satu orang memiliki dua nomor faks, Anda harus memutuskan, mana yang akan dipilih:

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

(Semua ini Anda dapatkan dalam jawaban pertanyaan sebelumnya)
Jika Anda mengambil daftar nomor faks ini, semua penerima Anda menerima faks, dan hanya satu faks untuk setiap orang. Tetapi beberapa nomor faks tidak akan digunakan. Anda dapat dengan mudah menemukannya:

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

Jika Anda mengirim faks ke salah satu nomor ini, beberapa orang mendapatkan satu faks dua kali.
Bahasa Inggris bukan bahasa ibu saya, jadi saya tidak mengerti apa yang Anda maksud ketika mengatakan "tanpa putus nomor faks". Seperti yang saya lihat dalam pertanyaan Anda, mungkin Anda perlu menggunakan urutan nomor faks dalam pertanyaan Anda sebagai prioritas nomor (angka yang lebih tinggi terletak di tabel - semakin tinggi kemungkinan untuk menggunakannya). Sepertinya Anda dapat menggunakan yang berikut:

select otherid, fax
  from (select otherid, fax, row_number() over (partition by otherid order by row) rn
          from NR_PVO_120)
 where rn = 1

di sini row dalam order by klausa adalah Row dari tabel contoh Anda.

UPD
P. S. Tentang permintaan terakhir saya:kami memiliki tabel dengan urutan tertentu, dan urutan itu penting. Kami mengambil baris tabel baris demi baris. Ambil baris pertama dan masukkan otherid its dan fax ke tabel hasil. Kemudian ambil baris berikutnya. Jika berisi fax lain nomor dan otherid , kita ambil, jika otherid sudah ada di tabel hasil kami, kami melewatkannya. Apakah Anda menanyakan algoritma ini?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Data dari Oracle di utf-8 dengan php

  2. Membuat Layar Login Kustom Di Oracle Forms 10g

  3. Bagaimana menghubungkan database Oracle dari PHP

  4. Bagaimana cara mendapatkan konten tekstual dari BLOB di Oracle SQL

  5. pisahkan string menjadi beberapa baris