过着简单,真实的生活,喜欢收藏变形金刚(TFE,G1,SL系列),研究金融股市,KOF98,篮球,学习研究Oracle技术,我并不是一个全职的Oracle DBA,但是对于Oracle技术的热爱和研究,是一个不争的事实,愿意结交广大Oracle技术爱好者!MSN:oracle_kof_tf@hotmail.com

row_number()over()的用法

上一篇 / 下一篇  2008-01-30 12:54:56 / 个人分类:Oracle数据库技术-SQL

以下是个测试的例子:

SQL> select * from employees;

   DEPT_ID NAME                     EMP_ID
---------- -------------------- ----------
        10 a                          1001
        10 b                          1003
        20 c                          1002
        20 d                          1004
        30 e                          1006
        20 d                          1005
        30 f                          1007
        40 g                          1008
        40 h                          1011
        60 i                          1009
        50 j                          1010

   DEPT_ID NAME                     EMP_ID
---------- -------------------- ----------
        50 k                          1012
        20 l                          1013

已选择13行。

SQL> select * from
  2  (select rownum m,employees.* from employees where rownum <=5)
  3  where m>=2;

         M    DEPT_ID NAME                     EMP_ID
---------- ---------- -------------------- ----------
         2         10 b                          1003
         3         20 c                          1002
         4         20 d                          1004
         5         30 e                          1006

SQL> select * from
  2  (select employees.*,row_number()over(order by emp_id) rowcount from employees)
  3  where rowcount<=10;

   DEPT_ID NAME                     EMP_ID   ROWCOUNT
---------- -------------------- ---------- ----------
        10 a                          1001          1
        20 c                          1002          2
        10 b                          1003          3
        20 d                          1004          4
        20 d                          1005          5
        30 e                          1006          6
        30 f                          1007          7
        40 g                          1008          8
        60 i                          1009          9
        50 j                          1010         10

SQL> select * from
  2  (select employees.*,row_number()over(partition by dept_id order by emp_id) rowcount from employees)
  3  where rowcount<=3;

   DEPT_ID NAME                     EMP_ID   ROWCOUNT
---------- -------------------- ---------- ----------
        10 a                          1001          1
        10 b                          1003          2
        20 c                          1002          1
        20 d                          1004          2
        20 d                          1005          3
        30 e                          1006          1
        30 f                          1007          2
        40 g                          1008          1
        40 h                          1011          2
        50 j                          1010          1
        50 k                          1012          2

   DEPT_ID NAME                     EMP_ID   ROWCOUNT
---------- -------------------- ---------- ----------
        60 i                          1009          1

SQL> select * from
  2  (select employees.*,row_number()over(partition by dept_id order by emp_id) rowcount from employees)
  3  where rowcount<=10;

   DEPT_ID NAME                     EMP_ID   ROWCOUNT
---------- -------------------- ---------- ----------
        10 a                          1001          1
        10 b                          1003          2
        20 c                          1002          1
        20 d                          1004          2
        20 d                          1005          3
        20 l                          1013          4
        30 e                          1006          1
        30 f                          1007          2
        40 g                          1008          1
        40 h                          1011          2
        50 j                          1010          1

   DEPT_ID NAME                     EMP_ID   ROWCOUNT
---------- -------------------- ---------- ----------
        50 k                          1012          2
        60 i                          1009          1


TAG:

引用 删除 Guest   /   2008-04-28 16:08:35
5
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar