आप जो डेटा चाहते हैं उसे प्राप्त करने के लिए, मैं 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;
आपको अपने दृष्टिकोण से दो समस्याएं हैं। पहला यह है कि सबक्वेरी या तो सही या गलत लौटाती है और मूल क्वेरी में सभी पंक्तियों को प्रभावित करती है। आप वास्तव में एक सहसंबद्ध उपश्रेणी चाहते हैं। लेकिन, भले ही आपको वह अधिकार मिले, आप मैरी के लिए डुप्लिकेट पंक्तियाँ लौटा रहे होंगे। यह उन दोनों समस्याओं का समाधान करता है।