Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle SQL - Không tồn tại - chuỗi không tồn tại trong danh sách các giá trị

Để có được dữ liệu bạn muốn, tôi khuyên bạn nên sử dụng kết hợp với having mệnh đề:

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;

Bạn có hai vấn đề với cách tiếp cận của mình. Đầu tiên là truy vấn con trả về true hoặc false và ảnh hưởng đến tất cả các hàng trong truy vấn ban đầu. Bạn thực sự muốn có một truy vấn con tương quan. Nhưng, ngay cả khi bạn hiểu đúng, bạn sẽ trả về các hàng trùng lặp cho Mary. Điều này giải quyết được cả hai vấn đề đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng truyền một mảng trong hàm PL / SQL

  2. Không thể tải DLL “OraOps10.dll”

  3. Chuyển đổi trường ngày giờ thành trường ngày tháng trong SQL (Oracle)

  4. SQL lạ lãng phí tài nguyên của tôi

  5. Truy vấn sql trên rownum