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...