oracle 一对多中的最大值
发布网友
发布时间:2024-10-18 15:34
我来回答
共2个回答
热心网友
时间:2024-11-07 08:42
select 客户名称, 产品名称, 金额*b.汇率 as 金额, 数量
from A, B
where a.币种主键 = b.币种主键
and b.汇率更新日期 < a.票据日期
and not exists ( select 1 from b b1 where b1.汇率更新日期 < a.票据日期 and b1.汇率更新日期 > b.汇率更新日期 and b1.币种主键 = a.币种主键)
not exists控制,不存在小于A表的票据日期而且比当前的汇率更新日期最大的记录,就说明当前的汇率更新日期是最接近A表票据日期的一个日期了。
另外,还可以取小于票据日期的最大汇率更新日期
select 客户名称, 产品名称, 金额*b.汇率 as 金额, 数量
from A, B
where a.币种主键 = b.币种主键
and b.汇率更新日期 = (
select max(汇率更新日期)
from B b1 where b1.汇率更新日期 < a.票据日期
and b1.币种主键 = b.币种主键
)
热心网友
时间:2024-11-07 08:43
SELECT a.客户名称,a.产品名称,a.金额 * b.汇率 ,a数量
FROM a,
b
WHERE a.币种主键 = b.币种主键
AND b.汇率更新日期 = (SELECT MAX(c.汇率更新日期)
FROM b c
WHERE c.币种主键 = a.币种主键
AND c.汇率更新日期 < a.票据日期)