SQL使用ROW_NUMBER() OVER函數(shù)生成序列號
語法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)簡單的說ROW_NUMBER()從1開始,為每一條分組記錄返回一個數(shù)字,這里的ROW_NUMBER() OVER (ORDER BY CYLH DESC) 是先把xlh列降序,再為降序以后的每條CYLH記錄返回一個序號。
示例:?

分析:ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根據(jù)COL1分組,在分組內部根據(jù) COL2排序,而此函數(shù)計算的值就表示每組內部排序后的順序編號(組內連續(xù)的唯一的)
也可這樣使用:ROW_NUMBER() OVER (ORDER BY COL2)
例子:
建立測試表,并插入測試數(shù)據(jù)
CREATE TABLE TEST_ROW_NUMBER_01(
CMZH varchar(10) not null,
CYLH varchar(10) null,
MJE money null,
);
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í)行腳本自動生成行號并按CYLH進行排序(滑動查看代碼)
SELECT ROW_NUMBER()OVER(ORDER BY CYLH DESC) AS ROWNUM,* FROM TEST_ROW_NUMBER_01
結果如下:

?注意:在使用over等開窗函數(shù)時,over里頭的分組及排序的執(zhí)行晚于“where,group by,order by”的執(zhí)行。
到此這篇關于SQL使用ROW_NUMBER() OVER函數(shù)生成序列號的文章就介紹到這了,更多相關SQL用ROW_NUMBER() OVER生成序列號內容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
關注官方微信