Oracle
 sql >> база данни >  >> RDS >> Oracle

получавате редица уникални стойности, без да разделяте стойности, които принадлежат на един и същ блок от стойности

Това не е пълен отговор, но не искам да пиша много запитвания в коментарите.
Основната ви цел е да изпращате информация до хората и да избягвате ситуацията, когато един човек получава факс два пъти. Така че първо имате нужда от списък с уникални получатели, като този:

select distinct otherid
  from NR_PVO_120

Ако едно лице има два факс номера, трябва да решите кой да изберете:

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

(Всичко това имате в отговорите на предишния въпрос)
Ако вземете този списък с номера на факсове, всички ваши получатели получават факса и само един факс за всеки човек. Но някои факс номера няма да се използват. Можете лесно да ги намерите:

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

Ако изпратите факс на някой от тези номера, някои хора получават един факс два пъти.
Английският не е моят роден език, така че не разбирам какво имате предвид, когато казвате „без да разделяте номерата на факсовете“. Както виждам във вашия въпрос, вероятно трябва да използвате реда на факс номерата във вашия въпрос като приоритет на номера (колкото по-голямо число е разположено в таблицата - толкова по-голяма е вероятността да го използвате). Изглежда, че можете да използвате следното:

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

тук row в order by клаузата е Row от примерната ви таблица.

UPD
П. S. Относно последното ми запитване:имаме таблица с определен ред и редът е важен. Взимаме ред по ред от таблицата. Вземете първия ред и поставете неговия otherid и fax към таблицата с резултатите. След това вземете следващия ред. Ако съдържа друг fax номер и otherid , ние го приемаме, ако otherid вече в нашата таблица с резултати, ние я пропускаме. Попитахте ли този алгоритъм?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кога трябва да вмъкна PL/SQL BEGIN...END блокове?

  2. Как да експортирате резултатите от заявката в CSV файл в SQL Developer (Oracle)

  3. Намерете Weblogic Server Версия/Пачове в EBS R12.2/ Самостоятелен Weblogic

  4. Явни JOIN срещу неявни присъединявания?

  5. Разделяне на низ, разделен със запетая, в съхранена в PL/SQL процедура