यदि आप इसे where
. पर स्विच करते हैं तो यह काम करना चाहिए खंड:
select *
from acc_accounts acc join
kp_paramcore p
on acc.account_no = p.accountnum and
acc.suffix = p.suffixc LEFT JOIN
ftf_rates fx
ON p.maturestart = fx.ftf_vadealtsinir and
p.maturefinish = fx.ftf_vadeustsinir and
fx.statusrec = 'A' and
fx.currencycode = acc.currencsw_kod and
fx.status= 'A'
where fx.ftf_validitystartdate= (SELECT MAX(ff.ftf_validitystartdate)
FROM ftf_rates ff
WHERE ff.status = 'A' and
ff.statusrec = 'A'
p.v_CurrentDate BETWEEN ff.systemstartdate AND ff.systemfinishdate AND ff.currencycode = acc.currencsw_kod
)
हालांकि, आप 'बाएं बाहरी जुड़ाव' विशेषताओं को खो देते हैं, इसलिए आप यह भी जोड़ना चाहेंगे:or fx.ftf_validitystartdate is null
. मुझे लगता है कि v_CurrentDate "पी" से आता है। स्तंभ नामों से पहले तालिका उपनामों का उपयोग करना हमेशा एक अच्छा विचार है।
हालांकि, मैं सवाल करता हूं कि सबक्वायरी वास्तव में जरूरी है या नहीं। इसकी आवश्यकता केवल तभी होती है जब एक से अधिक रिकॉर्ड होते हैं जो सबक्वेरी के अंदर की शर्तों को पूरा करते हैं। अन्यथा, मुझे लगता है कि आप बस on
. को बदल सकते हैं होने वाला खंड:
ON p.maturestart = fx.ftf_vadealtsinir and
p.maturefinish = fx.ftf_vadeustsinir and
fx.statusrec = 'A' and
fx.currencycode = acc.currencsw_kod and
fx.status= 'A'and
p.v_CurrentDate BETWEEN fx.systemstartdate AND fx.systemfinishdate