SQL如何使用ROW_NUMBER() OVER函数生成序列号
导读:本文共1365字符,通常情况下阅读需要5分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)简单的说ROW_NUMBER()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY CYLH DESC) 是先把xlh列降序,再为降序以后的每条CYLH记录返回一个序号。示例:分析:ROW_NUMBE... ...
目录
(为您整理了一些要点),点击可以直达。语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
简单的说ROW_NUMBER()
从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY CYLH DESC)
是先把xlh列降序,再为降序以后的每条CYLH记录返回一个序号。
示例:
分析:ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)
表示根据COL1分组,在分组内部根据 COL2
排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
也可这样使用:ROW_NUMBER() OVER (ORDER BY COL2)
例子:
建立测试表,并插入测试数据
CREATETABLETEST_ROW_NUMBER_01(CMZHvarchar(10)notnull,CYLHvarchar(10)null,MJEmoneynull,);
INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000011,20281997,10.50)INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000010,20281996,10.50)INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000008,20281995,0.00)INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000006,20281994,9.50)INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000004,20281993,5.50)INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000001,20281992,10.50)INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000002,20281992,10.50)INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000007,20217280,0.00)INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000009,20172458,5.50)INSERTINTOTEST_ROW_NUMBER_01(CMZH,CYLH,MJE)VALUES(2106000005,20121813,0.00)
执行脚本自动生成行号并按CYLH进行排序(滑动查看代码)
SELECTROW_NUMBER()OVER(ORDERBYCYLHDESC)ASROWNUM,*FROMTEST_ROW_NUMBER_01
结果如下:
注意:在使用over
等开窗函数时,over
里头的分组及排序的执行晚于“where
,group by
,order by
”的执行。
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
SQL如何使用ROW_NUMBER() OVER函数生成序列号的详细内容,希望对您有所帮助,信息来源于网络。