Oracle 中实例详解ROW_NUMBER()用法

来源:互联网 发布:linux深度商店下载 编辑:程序博客网 时间:2024/05/21 14:55
ROW_NUMBER()语法如下:1、row_number() over(order by column desc)先对列column按照降序,再为每条记录返回一个序列号:SELECT D.*, ROW_NUMBER() OVER(ORDER BY D.R_OPATE_NUM DESC) AS INX FROM REPORT_DATA D
2、row_number() over(partition by column1 order by column2 asc) 先按照column1分组,再对分组后的数据进行以column2升序排列select personalid,ct_smp_type,row_number() over(partition by personalid order by ct_smp_type asc) rn from neogoodsrule 语法1的具体实例:获取前100名人员的排名信息,如下
WITH REPORT_DATA AS  (SELECT DW.DWID,DW.DWMC,JY.JYXM,JY.JH,RMPC.R_OPATE_NUM   FROM REPORT_MONTH_PERSON_COUNT RMPC,JWT_JYXX JY,T_DWXX DW  WHERE RMPC.JYID = JY.JYUSERID  AND JY.SSDW = DW.DWID  AND RMPC.R_YEAR = 2013  AND RMPC.R_MONTH = 6  AND JY.SSDW LIKE '4102%'  ORDER BY RMPC.R_OPATE_NUM DESC)SELECT B.*FROM (SELECT D.*, ROW_NUMBER() OVER(ORDER BY D.R_OPATE_NUM DESC) AS INX       FROM REPORT_DATA D       ) BWHERE B.INX <=100ORDER BY B.INX