Det borde fungera om du byter detta till en where
klausul:
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
)
Du förlorar dock egenskaperna för 'vänster yttre sammanfogning', så du skulle också vilja lägga till:or fx.ftf_validitystartdate is null
. Jag antar att v_CurrentDate kommer från "p". Det är alltid en bra idé att använda tabellalias före kolumnnamn.
Jag ifrågasätter dock om underfrågan verkligen behövs. Det behövs bara när det finns mer än en post som uppfyller villkoren i underfrågan. Annars tror jag att du bara kan ändra on
klausul ska vara:
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