sql >> Database teknologi >  >> RDS >> Oracle

få et antal unikke værdier uden at adskille værdier, der hører til den samme blok af værdier

Dette er ikke et fuldstændigt svar, men jeg ønsker ikke at skrive en masse forespørgsler i kommentarer.
Dit hovedmål er at sende information til folk og undgå den situation, hvor én person modtager fax to gange. Så du skal først have en liste over unikke modtagere, som denne:

select distinct otherid
  from NR_PVO_120

Hvis én person har to faxnumre, skal du beslutte, hvilket du skal vælge:

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

(Alt dette har du i svar på tidligere spørgsmål)
Hvis du tager denne liste over faxnumre, modtager alle dine modtagere faxen og kun én fax for hver person. Men nogle faxnumre vil ikke blive brugt. Du kan nemt finde 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

Hvis du sender fax til et af disse numre, får nogle mennesker én fax to gange.
Engelsk er ikke mit modersmål, så jeg forstår ikke, hvad du mener, når du siger "uden at opdele faxnumre". Som jeg kan se i dit spørgsmål, skal du muligvis bruge rækkefølgen af ​​faxnumre i dit spørgsmål som nummerprioritet (jo højere tal er placeret i tabellen - jo større sandsynlighed for at bruge det). Det ser ud til, at du kan bruge følgende:

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

her row i order by klausul er en Row fra din eksempeltabel.

UPD
P. S. Om min sidste forespørgsel:vi har et bord med en bestemt rækkefølge, og rækkefølgen er vigtig. Vi tager rækker af tabellen linje for linje. Tag første række og indsæt dens otherid og fax til resultattabel. Tag derefter næste række. Hvis den indeholder en anden fax nummer og otherid , vi tager det, hvis otherid allerede i vores resultattabel springer vi den over. Spurgte du denne algoritme?



  1. Hvad er SQL, og hvordan kommer man i gang med det?

  2. php/mysql med flere forespørgsler

  3. Sådan autoinkrementeres en varchar

  4. Flere rækker til én kommasepareret værdi i SQL Server