sql >> Database >  >> RDS >> Oracle

Oracle SQL - bestaat niet - tekenreeks bestaat niet in een zoeklijst

Om de gewenste gegevens te krijgen, raad ik aan om aggregatie te gebruiken met een having clausule:

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;

Je hebt twee problemen met je aanpak. De eerste is dat de subquery true of false retourneert en van invloed is op alle rijen in de oorspronkelijke query. U wilt echt een gecorreleerde subquery. Maar zelfs als je dat goed hebt, zou je dubbele rijen voor Mary retourneren. Dit lost beide problemen op.



  1. Ontwerp van de aanbevelingsengine-database?

  2. mysql-kolomalias werkt niet, moet een lege aaneenschakeling maken om het te laten werken

  3. Anonimiseer uw abonnementsgegevens in Plan Explorer

  4. Werken met triggers in een MySQL-database - een zelfstudie