SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(2)
SQL2005增加了4個(gè)關(guān)于隊(duì)計(jì)算的函數(shù):分別是ROW_NUMBER,RANK,DENSE_RANK,NTILE.
注意:這些函數(shù)只能出現(xiàn)在SELECT和ORDER BY的查詢中。語(yǔ)法如下:
ranking_function over([partition by col_list] order by col_list)
ROW_NUMBER:在排序的基礎(chǔ)上對(duì)所有列進(jìn)行連續(xù)的數(shù)字進(jìn)行標(biāo)識(shí)。
執(zhí)行順序:為了計(jì)算列值,優(yōu)化器首先需要把數(shù)據(jù)在分區(qū)列上進(jìn)行排序,然后在對(duì)這些列進(jìn)行編碼。
SQL2005之前的技術(shù)處理列計(jì)算
1.(SET-BASED)
在SQL2005之前,已經(jīng)有了簡(jiǎn)單的對(duì)列集合的計(jì)算,使用unique partitioning + sort 組合。
比如,你可以使用下面的技術(shù):
SELECT empid, (SELECT COUNT(*) FROM dbo.Sales AS S2 WHERE S2.empid <= S1.empid) AS rownum FROM dbo.Sales AS S1 ORDER BY empid;
這是非常簡(jiǎn)單的,但也是非常慢的。。。
如果需要組合條件產(chǎn)生列數(shù)(即非唯一列的組合排序和斷路器),可以這樣做:
SELECT empid, qty, (SELECT COUNT(*) FROM dbo.Sales AS S2 WHERE S2.qty < S1.qty OR (S2.qty = S1.qty AND S2.empid <= S1.empid)) AS rownum FROM dbo.Sales AS S1 ORDER BY qty, empid;
當(dāng)然還有很多方法,比如用游標(biāo),就不寫例子了。
2.(IDENTITY-Based Solution)
SELECT empid, qty, IDENTITY(int, 1, 1) AS rn INTO #SalesRN FROM dbo.Sales; SELECT * FROM #SalesRN; DROP TABLE #SalesRN;
- SQLServer用t-sql命令批量刪除數(shù)據(jù)庫(kù)中指定表(游標(biāo)循環(huán)刪除)
- 如何在SQL Server 2008下輕松調(diào)試T-SQL語(yǔ)句和存儲(chǔ)過(guò)程
- SQL Server中的T-SQL的基本對(duì)象
- SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(4)
- SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(3)
- SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(1)
- SQLServer 2008 新增T-SQL 簡(jiǎn)寫語(yǔ)法
- SQL Server 數(shù)據(jù)庫(kù)管理常用的SQL和T-SQL語(yǔ)句
- SQL Server 數(shù)據(jù)庫(kù)管理常用的SQL和T-SQL語(yǔ)句
- SQL Server 數(shù)據(jù)庫(kù)管理常用的SQL和T-SQL語(yǔ)句
- T-sql語(yǔ)句修改SQL Server數(shù)據(jù)庫(kù)邏輯名、數(shù)據(jù)庫(kù)名、物理名的方法
相關(guān)文章
SQL Server 2005 鏡像構(gòu)建手冊(cè)(sql2005數(shù)據(jù)庫(kù)同步鏡像方案)
為了網(wǎng)站數(shù)據(jù)庫(kù)安全,我們需要備份數(shù)據(jù),這里為大家分享下sql2005數(shù)據(jù)庫(kù)同步鏡像方案,需要的朋友可以參考下2014-08-08
SQLServer 2005 控制用戶權(quán)限訪問(wèn)表圖文教程
SQL Server權(quán)限管理很簡(jiǎn)單的一小塊,有些地方并沒(méi)有深入理解和講述,只是希望對(duì)一些剛?cè)腴T的童鞋有幫助,其它大俠就當(dāng)是:我當(dāng)堂嚇一跳,然后得啖笑。2011-07-07
簡(jiǎn)單實(shí)用SQL腳本Part SQLServer 2005 鏈接服務(wù)器
SQL Server 2005版本的SSMS中已經(jīng)有了 服務(wù)器對(duì)象->鏈接服務(wù)器 的功能點(diǎn),用戶首先創(chuàng)建一個(gè)遠(yuǎn)程DB的鏈接對(duì)象,之后就可以像本地表一樣執(zhí)行表的DML了。2010-09-09
一步一步教你創(chuàng)建SQL 2005計(jì)劃任務(wù)應(yīng)用圖解教程
使用sql的計(jì)劃任務(wù)可以處理一些特殊環(huán)境的數(shù)據(jù),除了使用windows系統(tǒng)的計(jì)劃任務(wù)來(lái)定時(shí)處理,不過(guò)要配合程序才行,有些事情可以直接使用sql本身的計(jì)劃任務(wù),更方便,所以本文圖解一下Sql2005計(jì)劃任務(wù)的創(chuàng)建使用。2010-03-03
sql server 2005用戶權(quán)限設(shè)置深入分析
關(guān)于什么是用戶權(quán)限,最簡(jiǎn)單的定義可能是,用戶能做什么和不能做什么,本文將詳細(xì)介紹sql server 2005用戶權(quán)限設(shè)置,需要了解的朋友可以參考下2012-11-11
一個(gè)刪除指定表的所有索引和統(tǒng)計(jì)的過(guò)程
sql2005 一個(gè)刪除指定表的所有索引和統(tǒng)計(jì)的過(guò)程2009-09-09
SQL Server 2005與sql 2000之間的數(shù)據(jù)轉(zhuǎn)換方法
這篇文章主要介紹了SQL Server 2005與sql 2000之間的數(shù)據(jù)轉(zhuǎn)換方法,需要的朋友可以參考下2014-08-08
Sqlserver 2005附加數(shù)據(jù)庫(kù)時(shí)出錯(cuò)提示操作系統(tǒng)錯(cuò)誤5(拒絕訪問(wèn))錯(cuò)誤5120的解決辦法
最近幾天從網(wǎng)上找了幾個(gè)asp.net的登錄案例想要研究研究代碼,結(jié)果在用Sql Server2005附加數(shù)據(jù)庫(kù)文件時(shí)彈出錯(cuò)誤信息提示5120錯(cuò)誤,這里簡(jiǎn)單說(shuō)下解決方法,需要的朋友可以參考下2013-11-11
sql里將重復(fù)行數(shù)據(jù)合并為一行數(shù)據(jù)使用逗號(hào)進(jìn)行分隔
sql里將重復(fù)行數(shù)據(jù)合并為一行,將多行fieldname字段的內(nèi)容串聯(lián)起來(lái),用逗號(hào)分隔,接下來(lái)為大家介紹下詳細(xì)的實(shí)現(xiàn)sql語(yǔ)句,希望對(duì)你有所幫助2013-04-04

