Để 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 đề đó.