語(yǔ)法:row_number() over(partition by column order by column)
簡(jiǎn)單的說(shuō)row_number()
從1開始,為每一條分組記錄返回一個(gè)數(shù)字,這里的row_number() over (order by cylh desc)
是先把xlh列降序,再為降序以后的每條cylh記錄返回一個(gè)序號(hào)。
示例:
分析:row_number() over (partition by col1 order by col2)
表示根據(jù)col1分組,在分組內(nèi)部根據(jù) col2
排序,而此函數(shù)計(jì)算的值就表示每組內(nèi)部排序后的順序編號(hào)(組內(nèi)連續(xù)的唯一的)
也可這樣使用:row_number() over (order by col2)
例子:
建立測(cè)試表,并插入測(cè)試數(shù)據(jù)
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) |
執(zhí)行腳本自動(dòng)生成行號(hào)并按cylh進(jìn)行排序(滑動(dòng)查看代碼)
1
|
select row_number()over( order by cylh desc ) as rownum,* from test_row_number_01 |
結(jié)果如下:
注意:在使用over
等開窗函數(shù)時(shí),over
里頭的分組及排序的執(zhí)行晚于“where
,group by
,order by
”的執(zhí)行。
到此這篇關(guān)于sql使用row_number() over函數(shù)生成序列號(hào)的文章就介紹到這了,更多相關(guān)sql用row_number() over生成序列號(hào)內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://www.cnblogs.com/since-1995/p/15629029.html