使用ROW_NUMBER() OVER()進行數據分頁


數據分頁是這個經常說的東西,無論在WEBForm還是WinForm中它都會被單獨拿出來,或者是公用組件,或者是公用類庫,反正對於數據分頁這個東西,總是我們關注的一個話題,但事實上,數據分頁歸根結底是數據庫的東西,更直接的說,它是數據表的范疇,對於一個SQL請求來說,你要取數據,要取多少條,從哪條開始取,這事實上就是分頁實現的原理。

SQL更新到2005版之后,為開發者提供了不少函數,ROW_NUMBER() OVER ()就是其中之一,它可以為你的結果集生成一個行號,並可以快速的主位到第幾條數據。

 MSDN上對它的應用

1 USE AdventureWorks2012; 
2 GO
3 SELECT ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS Row, 
4     FirstName, LastName, ROUND(SalesYTD,2,1) AS "Sales YTD" 
5 FROM Sales.vSalesPerson
6 WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;

結果會把集合加上行號,如下:

在項目中,分頁功能的應用,代碼如下:

1 SELECT  *FROM (SELECT ROW_NUMBER() OVER ( ORDER BY a.orderid ) AS row ,*
2 FROM    dbo.Order_Info_View AS a
3 where  CONVERT(CHAR(7),a.buytime,20)='2010-04'and a.agentid=3455) AS b
4 WHERE  b.row BETWEEN 1 AND 20

事實上,把上面的代碼改一下,就可以方例的實現對某頁數據的統計了,呵呵

1 SELECT  sum(totalfee)
2 FROM (SELECT ROW_NUMBER() OVER ( ORDER BY a.orderid ) AS row ,*
3 FROM    dbo.Order_Info_View AS a
4 where  CONVERT(CHAR(7),a.buytime,20)='2010-04'and a.agentid=3455) AS b
5 WHERE  b.row BETWEEN 1 AND 20

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM