在11gr2中,Oracle分析函數的功能進一步增強。
這篇介紹新增的分析函數NTH_VALUE。
以前版本的分析函數,提供了FIRST_VALUE和LAST_VALUE的功能,而11gr2中,Oracle增加了一個NTH_VALUE的功能,這個功能包含了FIRST_VALUE和LAST_VALUE的功能,還可以取任意的正數或倒數的沒個記錄。
簡單看一個這個分析函數的用法:
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database11gEnterprise Edition Release11.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
---------- ------------------------------
1 SYSTEM
2 SYSAUX
3 UNDOTBS1
4 TEMP
5 USERS
6 YANGTK
已選擇6行。
SQL> select id,
2 name,
3 first_value(name) over(order by id) f_name,
4 last_value(name) over(order by id) l_name
5 from t;
ID NAME F_NAME L_NAME
本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45456.htm
---------- ------------------------------ ------------------------------ ------------------
1 SYSTEM SYSTEM SYSTEM
2 SYSAUX SYSTEM SYSAUX
3 UNDOTBS1 SYSTEM UNDOTBS1
4 TEMP SYSTEM TEMP
5 USERS SYSTEM USERS
6 YANGTK SYSTEM YANGTK
已選擇6行。
SQL> select id,
2 name,
3 nth_value(name, 2) over(order by id) f_2_name,
4 nth_value(name, 2) from last over(order by id) l_2_name
5 from t;
ID NAME F_2_NAME L_2_NAME
---------- ------------------------------ ------------------------------ ------------------
1 SYSTEM
2 SYSAUX SYSAUX SYSTEM
3 UNDOTBS1 SYSAUX SYSAUX
4 TEMP SYSAUX UNDOTBS1
5 USERS SYSAUX TEMP
6 YANGTK SYSAUX USERS
已選擇6行。
其中NTH_VALUE中的第二個參數是指這個函數取排名第幾的記錄,而FROM FIRST或FROM LAST指明這個排名第幾,是從FIRST開始計算,還是從LAST開始計算。