sql >> Database >  >> RDS >> Oracle

een aantal unieke waarden krijgen zonder waarden te scheiden die tot hetzelfde waardenblok behoren

Dit is geen volledig antwoord, maar ik wil niet veel vragen in opmerkingen plaatsen.
Uw hoofddoel is om informatie naar mensen te sturen en om de situatie te vermijden dat één persoon tweemaal een fax ontvangt. Dus je hebt eerst een lijst met unieke ontvangers nodig, zoals deze:

select distinct otherid
  from NR_PVO_120

Als één persoon twee faxnummers heeft, moet u beslissen welke u moet kiezen:

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

(Dit alles heeft u in de antwoorden op de vorige vraag)
Als u deze lijst met faxnummers gebruikt, ontvangen al uw ontvangers de fax, en slechts één fax voor elke persoon. Maar sommige faxnummers worden niet gebruikt. Je kunt ze gemakkelijk vinden:

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

Als je een fax naar een van deze nummers stuurt, krijgen sommige mensen twee keer een fax.
Engels is niet mijn moedertaal, dus ik begrijp niet wat je bedoelt als je zegt "zonder faxnummers op te splitsen". Zoals ik in uw vraag kan zien, moet u mogelijk de volgorde van faxnummers in uw vraag gebruiken als nummerprioriteit (het hogere nummer staat in de tabel - hoe groter de kans om het te gebruiken). Het lijkt erop dat je het volgende kunt gebruiken:

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

hier row in order by clausule is een Row uit je voorbeeldtabel.

UPD
P. S. Over mijn laatste vraag:we hebben een tafel met een bepaalde volgorde, en de volgorde is belangrijk. We nemen de rijen van de tabel regel voor regel. Neem de eerste rij en plaats de otherid en fax naar resultaattabel. Neem dan de volgende rij. Als het een andere fax bevat nummer en otherid , nemen we aan, als otherid al in onze resultatentabel staan, slaan we deze over. Heb je dit algoritme gevraagd?



  1. Spring's Stored Procedure - resultaten die terugkomen van de procedure zijn altijd leeg

  2. BIN() – Verkrijg de binaire waarde van een getal in MySQL

  3. Kan ik negeer_dup_key inschakelen voor een primaire sleutel?

  4. hoe vervang de geaccentueerde letter in een varchar2-kolom in orakel