sql >> Databáze >  >> RDS >> Oracle

Oracle SQL – neexistuje – řetězec v seznamu hodnot neexistuje

Chcete-li získat požadovaná data, doporučoval bych použít agregaci s having klauzule:

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;

Máte dva problémy se svým přístupem. První je, že poddotaz buď vrátí hodnotu true nebo false a ovlivní všechny řádky v původním dotazu. Opravdu chcete korelovaný poddotaz. Ale i kdybyste to pochopili správně, vraceli byste pro Mary duplicitní řádky. Tím jsou oba tyto problémy vyřešeny.



  1. Úvod do Failover pro replikaci MySQL – blog 101

  2. MYSQL Jak používat trim ve výběrovém dotazu

  3. Skrýt databázi SQL z Management Studio

  4. Průběžný součet podle seskupených záznamů v tabulce