国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SqlServer 2005 T-SQL Query 學習筆記(2)

2024-08-31 01:01:28
字體:
來源:轉載
供稿:網友

SQL2005增加了4個關于隊計算的函數:分別是ROW_NUMBER,RANK,DENSE_RANK,NTILE.

 

注意:這些函數只能出現在SELECT和ORDER BY的查詢中。語法如下:

ranking_function over([partition by col_list] order by col_list)

 

ROW_NUMBER:在排序的基礎上對所有列進行連續的數字進行標識。

執行順序:為了計算列值,優化器首先需要把數據在分區列上進行排序,然后在對這些列進行編碼。

 

SQL2005之前的技術處理列計算

1.(SET-BASED)

在SQL2005之前,已經有了簡單的對列集合的計算,使用unique partitioning + sort 組合。

比如,你可以使用下面的技術:

SELECT empid, (SELECT COUNT(*) FROM dbo.Sales AS S2 WHERE S2.empid <= S1.empid) AS rownumFROM dbo.Sales AS S1ORDER BY empid;

 

這是非常簡單的,但也是非常慢的。。。

 

如果需要組合條件產生列數(即非唯一列的組合排序和斷路器),可以這樣做:

SELECT empid, qty, (SELECT COUNT(*) FROM dbo.Sales AS S2 WHERE S2.qty < S1.qtyOR (S2.qty = S1.qty AND S2.empid <= S1.empid)) AS rownumFROM dbo.Sales AS S1ORDER BY qty, empid;

 

當然還有很多方法,比如用游標,就不寫例子了。

 

2.(IDENTITY-Based Solution)

1, 1) AS rnINTO #SalesRN FROM dbo.Sales;#SalesRN;DROP TABLE #SalesRN;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三亚市| 大港区| 乌兰察布市| 花莲市| 确山县| 肥西县| 贵州省| 双牌县| 邮箱| 大丰市| 丽江市| 南投市| 德庆县| 华亭县| 唐河县| 香港| 丰台区| 太和县| 漠河县| 手游| 临澧县| 江油市| 靖江市| 措勤县| 梁山县| 江华| 融水| 定襄县| 青田县| 花垣县| 五华县| 海阳市| 罗平县| 北川| 梓潼县| 依兰县| 沙洋县| 葵青区| 张家界市| 西宁市| 界首市|