SQL2005 取得行號

2021-06-01 21:03:26 字數 3090 閱讀 6178

下面介紹乙個sql server 2005 中的新東東:

row_number

返回結果集分割槽內行的序列號,每個分割槽的第一行從 1 開始。

語法:row_number ( )     over ( [ ] )

備註:order by 子句可確定在特定分割槽中為行分配唯一 row_number 的順序。

引數:將 from 子句生成的結果集劃入應用了 row_number 函式的分割槽。

確定將 row_number 值分配給分割槽中的行的順序。

返回型別:

bigint

示例:select

*into

#tfrom

(select

2f1, 'aa

'f2,

'101

'f3

union

allselect

1f1, 'aa

'f2,

'102

'f3

union

allselect

4f1, 'bb

'f2,

'103

'f3

union

allselect

5f1, 'cc

'f2,

'104

'f3

union

allselect

3f1, 'aa

'f2,

'105

'f3

union

allselect

7f1, 'bb

'f2,

'106

'f3

union

allselect

6f1, 'cc

'f2,

'107

'f3

union

allselect

5f1, 'cc

'f2,

'108

'f3

) t1--1

select

row_number()

over

(order

byf1

asc)

asf1order,

*from

#t --

先按照f1順序,再加上順序號f1order,結果如下:

f1order               f1           f2    f3

-------------------- ----------- ---- ----11

aa   

1022

2aa   

1013

3aa   

1054

4bb   

1035

5cc   

1046

5cc   

1087

6cc   

1078

7bb   

106--

2select

row_number()

over

(order

byf1

desc

) as

f1order,

*from

#t --

先按照f1倒序,再加上順序號f1order,結果如下:

f1order               f1           f2    f3

-------------------- ----------- ---- ----17

bb   

1062

6cc   

1073

5cc   

1084

5cc   

1045

4bb   

1036

3aa   

1057

2aa   

1018

1aa   

102--

3select

row_number()

over

(order

byf1

asc)

asf1order,

*from

#t order

byf1

asc--

先按照f1順序,再加上順序號f1order,再把結果按f1順序顯示,結果如下:

f1order               f1           f2    f3

-------------------- ----------- ---- ----11

aa   

1022

2aa   

1013

3aa   

1054

4bb   

1035

5cc   

1046

5cc   

1087

6cc   

1078

7bb   

106--4

select

row_number()

over

(order

byf1

asc)

asf1order,

*from

#t order

byf1

desc

--先按照f1順序,再加上順序號f1order,再把結果按地f1倒序顯示,注意順序號f1order也倒過來了,保持位置相對不變,結果如下:

f1order               f1           f2    f3

-------------------- ----------- ---- ----87

bb   

1067

6cc   

1075

5cc   

1046

5cc   

1084

4bb   

1033

3aa   

1052

2aa   

1011

1aa   

102

SQL2005使用CLR函式獲取行號

行號可以廣泛使用在分頁或者報表當中。sql2005使用row number來獲取,但這個需要配合order來處理,資料量大的情況下可能會影響效能。要實現clr自定函式返回行號的關鍵問題是乙個自增長的序列如何儲存,並且需要考慮併發和釋放的問題。這裡我用了乙個靜態的集合來保持這個事物,缺點是每次查詢必須...

SQL2005使用CLR函式獲取行號

行號可以廣泛使用在分頁或者報表當中。sql2005使用row number來獲取,但這個需要配合order來處理,資料量大的情況下可能會影響效能。要實現clr自定函式返回行號的關鍵問題是乙個自增長的序列如何儲存,並且需要考慮併發和釋放的問題。這裡我用了乙個靜態的集合來保持這個事物,缺點是每次查詢必須...

取得sql2005 表字段資訊的sql語句

select row number over order by id as row number,fieldname,fielddescn as cnname,fieldtype,fieldlength,isidentifier,iskeyfield,allownull,defaultvalue,f...