之前就一直知道分析函数有First_value和Last_value,可以分别返回第一笔和最后一笔的值,抑或者用row_number /rank/ dense_rank再包一层取任意一行的值。
就寻思是不是也有函数可以直接返回任意行的值,果不其然,网络很强大,这个问题已经有人总结了..
NTH_VALUE登场..
在11gr2中,Oracle分析函数的功能进一步增强。
这篇介绍新增的分析函数NTH_VALUE。
以前版本的分析函数,提供了FIRST_VALUE和LAST_VALUE的功能,而11gr2中,Oracle增加了一个NTH_VALUE的功能,这个功能包含了FIRST_VALUE和LAST_VALUE的功能,还可以取任意的正数或倒数的没个记录。
简单看一个这个分析函数的用法:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
SQL> create table t (id, name)
2 as select rownum, tablespace_name
3 from dba_tablespaces;
表已创建。
SQL> select * from t;
ID NAME
----------