【发布时间】:2012-12-04 09:05:00
【问题描述】:
如下所示;我怎样才能实现 fx.ftf_validitystartdate= ... 这条线的价值,因为 oracle 不允许我在下面这样做 .
select * from acc_accounts acc
join kp_paramcore p on
acc.account_no = p.accountnum
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'
and fx.ftf_validitystartdate= (SELECT MAX(ff.ftf_validitystartdate)
FROM ftf_rates ff
WHERE ff.status = 'A'
AND ff.statusrec = 'A'
AND v_CurrentDate BETWEEN ff.systemstartdate AND ff.systemfinishdate AND ff.currencycode = acc.currencsw_kod
)
【问题讨论】:
-
And在您的复制粘贴查询中在fx.status= 'A'之后丢失? -
oracle 版本 10g,也必须在 11g 上运行
-
我假设您在
kp_paramcore加入之后也缺少on? -
@danihp:CTE 早在 Oracle 11g 之前就已经可用(我认为它们在 9.1 中可能更早引入 - 但它们在 10.x 中肯定可用)。 11.2 引入了 recursive CTE,在这种情况下不需要。
-
@a_horse_with_no_name,请查看我的答案。感谢您更正我的评论。