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
) B
WHERE B.INX <=100
ORDER BY B.INX