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

Oracle SQL - Findes ikke - streng findes ikke i en liste over værdier

For at få de data, du ønsker, vil jeg anbefale at bruge aggregering med en having klausul:

Select SP.SPRIDEN_ID, SP.SPRIDEN_LAST_NAME, SP.SPRIDEN_FIRST_NAME, SR.SHRDGMR_SEQ_NO, 
       SR.SHRDGMR_PROGRAM
from spriden SP join
     SHRDGMR SR
     on SP.SPRIDEN_PIDM = SR.SHRDGMR_PIDM join
     SPRHOLD SH
     on sp.spriden_pidm = sh.sprhold_pidm
where SR.SHRDGMR_DEGS_CODE = 'PN' and
      SR.SHRDGMR_TERM_CODE_GRAD >= '201489' and
     sp.spriden_change_ind is NULL
group by SP.SPRIDEN_ID, SP.SPRIDEN_LAST_NAME, SP.SPRIDEN_FIRST_NAME, SR.SHRDGMR_SEQ_NO, 
         SR.SHRDGMR_PROGRAM
having sum(case when sh.sprhold_hldd_code = 'RH' then 1 else 0 end) = 0;

Du har to problemer med din tilgang. Den første er, at underforespørgslen enten returnerer sand eller falsk og påvirker alle rækker i den oprindelige forespørgsel. Du vil virkelig have en korreleret underforespørgsel. Men selv hvis du havde ret, ville du returnere duplikerede rækker til Mary. Dette løser begge disse problemer.



  1. Skriv en forespørgsel for at finde navnet på den eller de studerende, der har opnået maksimal karakter i Software Engineering. Sorter resultatet efter navn

  2. Oracle - Hvorfor forsvinder det indledende nul i et tal, når det konverteres til TO_CHAR

  3. Kald til en medlemsfunktion real_escape_string() på et ikke-objekt

  4. Hent alle poster fra tabel B, som har en relation til flere poster (givet liste) fra tabel A