Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL - не съществува - низът не съществува в списък със стойности

За да получите данните, които искате, бих препоръчал да използвате агрегиране с having клауза:

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;

Имате два проблема с вашия подход. Първият е, че подзаявката връща true или false и засяга всички редове в оригиналната заявка. Наистина искате корелирана подзаявка. Но дори и да сте разбрали правилно, ще върнете дублирани редове за Мери. Това решава и двата проблема.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle заявка за сравняване на всички редове с еднакъв идентификатор в таблица

  2. Съпоставяне на данни от колона към стойност (Oracle)

  3. Открит е нечислов знак, където се очаква число

  4. Премахване на припокриващите се часове от броя на неработните дни

  5. Дефиницията на колона е несъвместима с дефиницията на клъстерна колона