Debería funcionar si cambias esto a un where
cláusula:
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
)
Sin embargo, pierde las características de 'unión externa izquierda', por lo que también querrá agregar:or fx.ftf_validitystartdate is null
. Supongo que v_CurrentDate proviene de "p". Siempre es una buena idea usar alias de tablas antes de los nombres de las columnas.
Sin embargo, me pregunto si la subconsulta es realmente necesaria. Solo es necesario cuando hay más de un registro que cumple las condiciones dentro de la subconsulta. De lo contrario, creo que puedes cambiar el on
cláusula a ser:
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