語法: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)
例子:
建立測試表,并插入測試數據
1
2
3
4
5
|
create table test_row_number_01( cmzh varchar (10) not null , cylh varchar (10) null , mje money null , ); |
1
2
3
4
5
6
7
8
9
10
|
insert into test_row_number_01(cmzh,cylh,mje) values (2106000011,20281997,10.50) insert into test_row_number_01(cmzh,cylh,mje) values (2106000010,20281996,10.50) insert into test_row_number_01(cmzh,cylh,mje) values (2106000008,20281995,0.00) insert into test_row_number_01(cmzh,cylh,mje) values (2106000006,20281994,9.50) insert into test_row_number_01(cmzh,cylh,mje) values (2106000004,20281993,5.50) insert into test_row_number_01(cmzh,cylh,mje) values (2106000001,20281992,10.50) insert into test_row_number_01(cmzh,cylh,mje) values (2106000002,20281992,10.50) insert into test_row_number_01(cmzh,cylh,mje) values (2106000007,20217280,0.00) insert into test_row_number_01(cmzh,cylh,mje) values (2106000009,20172458,5.50) insert into test_row_number_01(cmzh,cylh,mje) values (2106000005,20121813,0.00) |
執行腳本自動生成行號并按cylh進行排序(滑動查看代碼)
1
|
select row_number()over( order by cylh desc ) as rownum,* from test_row_number_01 |
結果如下:
注意:在使用over
等開窗函數時,over
里頭的分組及排序的執行晚于“where
,group by
,order by
”的執行。
到此這篇關于sql使用row_number() over函數生成序列號的文章就介紹到這了,更多相關sql用row_number() over生成序列號內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://www.cnblogs.com/since-1995/p/15629029.html