sql >> Databasteknik >  >> RDS >> Oracle

få ett antal unika värden utan att separera värden som hör till samma värdeblock

Det här är inte ett fullständigt svar, men jag vill inte skriva en massa frågor i kommentarer.
Ditt huvudsakliga mål är att skicka information till människor och att undvika situationen när en person får fax två gånger. Så du behöver först en lista med unika mottagare, så här:

select distinct otherid
  from NR_PVO_120

Om en person har två faxnummer måste du bestämma vilket du ska välja:

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

(Allt detta har du i svaren på föregående fråga)
Om du tar den här listan med faxnummer får alla dina mottagare faxet och bara ett fax för varje person. Men vissa faxnummer kommer inte att användas. Du kan enkelt hitta dem:

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

Om du skickar fax till något av de här numren får en del människor ett fax två gånger.
Engelska är inte mitt modersmål, så jag förstår inte vad du menar när du säger "utan att dela upp faxnummer". Som jag kan se i din fråga, kanske du måste använda faxnummerordningen i din fråga som nummerprioritet (ju högre nummer finns i tabellen - desto högre sannolikhet att använda det). Det verkar som att du kan använda följande:

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

här row i order by sats är en Row från din exempeltabell.

UPD
P. S. Om min senaste fråga:vi har ett bord med en viss ordning, och ordningen är viktig. Vi tar rader av tabellen rad för rad. Ta första raden och sätt dess otherid och fax till resultattabellen. Ta sedan nästa rad. Om den innehåller ett annat fax nummer och otherid , vi tar det, om otherid redan i vår resultattabell hoppar vi över den. Frågade du den här algoritmen?



  1. Kontrollera om en icke-LOB-kolumn behöver uppdateras

  2. ODBC 4.0

  3. Hur kör man ett SSIS-paket från .NET?

  4. Vad är PostgreSQL-motsvarigheten för ISNULL()