sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL - Finns inte - strängen finns inte i en värdelista

För att få den data du vill ha rekommenderar jag att du använder 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 två problem med ditt tillvägagångssätt. Den första är att underfrågan antingen returnerar sant eller falskt och påverkar alla rader i den ursprungliga frågan. Du vill verkligen ha en korrelerad underfråga. Men även om du hade rätt, skulle du returnera dubblettrader för Mary. Detta löser båda dessa problem.



  1. En introduktion till tidsseriedatabaser

  2. sql-frågan fungerar inte med order by

  3. Få webbplatsinloggning att fungera på WordPress också

  4. Hur fixar jag MySQL 8 felkoder:1525 och 1292?