SQL2005新增函式

2021-08-29 16:46:51 字數 1592 閱讀 6841

sql2005新增函式

sql2005新增了幾個結果集行號、排名、分組等函式,給我們帶來了很大的方便。

1. row_number函式

返回結果集分割槽內行的序列號。sql表是基於集合的,沒有像dbf,access這樣的記錄行的概念。row_number函式返回行號不是資料表的物理行號,而是結果集分割槽內行的序列號。

如:select row_number() over (order by prodcode) as rownum, * from t_product

返回基於列prodcode排序集合的行號。利用row_number 及 over排序子句,我們可以實現資料分頁功能,而以前要比較複雜的**才能實現。

select

top(

10) prodcode,name 

from

(  select

prodcode,name, row_number() 

over

(order

byprodcode) 

asrow_number 

from

t_product) 

ast 

where

row_number 

>((5

-1) *

10) 

這條語句顯示產品表的第5頁 ,每頁10行記錄。

2. 分組 ntitle

ntitle函式將指定資料集劃分成n個組,分組時由orderby指定排序列。如將產品表劃分成10個組:

select

prodcode,name,prodtypecode,ntile(

10) 

over

(order

byprodtypecode) 

asntile 

from

t_product

3. rank、dense_rank排名函式

排名函式很容易實現諸如銷售排名報表這樣的功能,同row_number、ntitle一樣需要指定over 排名視窗函式,確定行集的分割槽和排序。如實現按業務員的銷量排名表。

select

prodid,

sum(quantity) 

astotal,rank() 

over

(order

bysum

(quantity) 

desc

) as

rank     

from

secontdetl   

group

byprodid

執行結果如下:

dense_rank與rank不同的是返回指定元組在指定集中的排名(排名從 1 開始),但排名號不間斷。即如果有2個並列第1名,那麼rank函式第3行記錄將是排名3,而dense_rank是2.

sql2005時間函式

sql server中的日期與時間函式 1.當前系統日期 時間 select getdate 2.dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值 例如 向日期加上2天 select dateadd day,2,2004 10 15 返回 2004 10 17 00 ...

SQL2005 自定義函式

單錶 create function get pxlb085 zw pxlb char 10 returns varchar 20 asbegin declare sreturnvalue varchar 20 select sreturnvalue o text from sys select w...

sql2005排名函式

goselect name,rank over order by name from tb 序號不連續,相同的值的序號相同,接下來的乙個值不相同的序號為前面的行數 1 select name,rank over partition by name order by name from tb 按nam...