滞后 / 主要分析函数允许根据官方文档访问上一行/下一行而不使用连接技术:
这是否意味着如果我包含不是 lag / lead 的字段 - Oracle会在这些字段上加入吗?
因此,如果我查询货币汇率(找到漏洞 - 没有定义汇率的那一天):
select CURRENCY, RATE, XDATE, lead(XDATE) over (order by XDATE) from CURRENCY_RATE
我的引导(XDATE)与 XDATE 相同的 CURRENCY ?
线索表达式中的分区关键字必须在 CURRENCY 上用于实现此目标吗?
答案 0 :(得分:1)
您的查询在没有货币考虑的情况下成为领先者。 如果要按日期对任何货币进行排序,则需要按关键字添加分区:
select CURRENCY,
RATE,
XDATE,
lead(XDATE) over(partition by CURRENCY order by XDATE)
from CURRENCY_RATE
;
答案 1 :(得分:0)
我在http://www.orafaq.com/node/55中找到了对语义分析函数的良好解释:
某些功能支持分区内的 window_clause ,以进一步限制它们所操作的记录。在没有任何 window_clause 的情况下,将对分区子句的所有记录计算分析函数。
函数SUM,COUNT,AVG,MIN,MAX是常见的分析函数,其结果不依赖于记录的顺序。
LEAD,LAG,RANK,DENSE_RANK,ROW_NUMBER,FIRST,FIRST VALUE,LAST,LAST VALUE等函数取决于记录的顺序。
另一个不错的文档:http://www.oracle-base.com/articles/misc/analytic-functions.php