Oracle
 sql >> Baza danych >  >> RDS >> Oracle

uzyskać liczbę unikalnych wartości bez oddzielania wartości należących do tego samego bloku wartości

To nie jest pełna odpowiedź, ale nie chcę pisać wielu zapytań w komentarzach.
Twoim głównym celem jest wysyłanie informacji do ludzi i uniknięcie sytuacji, w której jedna osoba otrzyma faks dwukrotnie. Więc najpierw potrzebujesz listy unikalnych odbiorców, takiej jak ta:

select distinct otherid
  from NR_PVO_120

Jeśli jedna osoba ma dwa numery faksu, musisz zdecydować, który wybrać:

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

(Wszystko to masz w odpowiedziach na poprzednie pytanie)
Jeśli weźmiesz tę listę numerów faksów, wszyscy odbiorcy otrzymają faks i tylko jeden faks na każdą osobę. Jednak niektóre numery faksów nie będą używane. Możesz je łatwo znaleźć:

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

Jeśli wyślesz faks na którykolwiek z tych numerów, niektórzy otrzymają jeden faks dwa razy.
Angielski nie jest moim językiem ojczystym, więc nie rozumiem, co masz na myśli, mówiąc „bez dzielenia numerów faksów”. Jak widzę w Twoim pytaniu, być może musisz użyć kolejności numerów faksów w pytaniu jako priorytetu (im wyższy numer znajduje się w tabeli - tym większe prawdopodobieństwo, że go użyjesz). Wygląda na to, że możesz użyć następujących:

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

tutaj row w order by klauzula jest Row z przykładowej tabeli.

UPD
S. S. O moim ostatnim zapytaniu:mamy tabelę z określoną kolejnością, a kolejność jest ważna. Bierzemy wiersze tabeli wiersz po wierszu. Weź pierwszy wiersz i umieść jego otherid i fax do tabeli wyników. Następnie weź następny rząd. Jeśli zawiera inny fax numer i otherid , bierzemy to, jeśli otherid już w naszej tabeli wyników pomijamy to. Czy zadałeś ten algorytm?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć maszynę wirtualną z VirtualBox?

  2. Jak wykonać SQL z poziomu skryptu bash?

  3. Oracle uzyskuje wartość sumy kontrolnej dla porcji danych zdefiniowanej przez klauzulę select

  4. Oracle REGEXP_LIKE i granice słów

  5. Próba wdrożenia aplikacji Oracle-ADF na Tomcat 7