我正在重构一位同事的代码,我有几种情况,他使用游标来获取“与某个谓词匹配的最新行”:
他的技术是将连接写成游标,按日期字段降序排列,打开游标,获取第一行,然后关闭游标。
这需要为驱动它的结果集的每一行调用一个游标,这对于许多行来说代价高昂。我更希望能够加入,但是比相关子查询更便宜:
select a.id_shared_by_several_rows, a.foo from audit_trail a
where a.entry_date = (select max(a.entry_date)
from audit_trail b
where b.id_shared_by_several_rows = a.id_shared_by_several_rows
);
我猜既然这是一个常见的需求,那么有一个 Oracle 分析功能可以做到这一点吗?