row_number() over函式

zhaoqing0803發表於2013-10-24
     row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根據COL1分組,在分組內部根據 COL2排序,而此函式計算的值就表示每組內部排序後的順序編號(組內連續的唯一的). 
  舉個例子:
   1、首先建立一個表
      create table tab1(
        id number(4),
        name varchar2(100)
      );
   2、插入幾條記錄
     insert into tab1 (ID, NAME) values (1, 'aa');
     insert into tab1 (ID, NAME) values (1, 'ab');
     insert into tab1 (ID, NAME) values (1, 'ac');
     insert into tab1 (ID, NAME) values (2, 'bb');
     insert into tab1 (ID, NAME) values (2, 'bc');
     insert into tab1 (ID, NAME) values (2, 'bd');
     insert into tab1 (ID, NAME) values (3, 'cc');
     insert into tab1 (ID, NAME) values (3, 'cd');
     insert into tab1 (ID, NAME) values (3, 'ce'); 
   3、需求為按id分組,在組內以name排序,排序為前兩個,這時就需
      要用到row_number over 函式
       select * from (
        select id,name,row_number() over (partition by
        id   order by name) row_num
         from tab1)
        where row_num<3
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23205405/viewspace-774962/,如需轉載,請註明出處,否則將追究法律責任。

相關文章