知方可补不足~SQL2005使用ROW_NUMBER() OVER()进行数据分页

简介:

数据分页是这个经常说的东西,无论在WEBForm还是WinForm中它都会被单独拿出来,或者是公用组件,或者是公用类库,反正对于数据分页这个东西,总是我们关注的一个话题,但事实上,数据分页归根结底是数据库的东西,更直接的说,它是数据表的范畴,对于一个SQL请求来说,你要取数据,要取多少条,从哪条开始取,这事实上就是分页实现的原理。

SQL更新到2005版之后,为开发者提供了不少函数,ROW_NUMBER() OVER ()就是其中之一,它可以为你的结果集生成一个行号,并可以快速的主位到第几条数据。

 MSDN上对它的应用

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

结果会把集合加上行号,如下:

在项目中,分页功能的应用,代码如下:

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

事实上,把上面的代码改一下,就可以方例的实现对某页数据的统计了,呵呵

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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:知方可补不足~SQL2005使用ROW_NUMBER() OVER()进行数据分页,如需转载请自行联系原博主。

目录
相关文章
|
6天前
|
SQL 存储 分布式计算
|
1天前
|
SQL 移动开发 Oracle
SQL查询连续六天数据记录的技巧与方法
在数据库查询中,实现针对连续几天(如连续六天)的数据筛选是一个常见且稍具挑战性的任务
|
1天前
|
SQL 数据库 索引
SQL语言入门:如何表达你的数据需求
在数据库的世界里,SQL(Structured Query Language)是一种至关重要的语言,它允许用户与数据库进行交互,执行数据的查询、更新、插入和删除等操作
|
4天前
|
SQL 存储 数据管理
解锁 SQL Server 2022的时间序列数据功能
【8月更文挑战第14天】解锁SQL Server 2022的时间序列数据功能需先确认版本支持;接着创建数据库与含时间列的表,如`TimeSeriesData`;然后插入时间序列数据;利用内置函数如窗口函数计算移动平均等统计;最后针对大数据量配置索引及分区以优化性能。这流程助力高效处理时间序列数据。
|
6天前
|
SQL
SQL SERVER数据分组后取第一条数据——PARTITION BY
SQL SERVER数据分组后取第一条数据——PARTITION BY
12 0
|
9月前
|
算法
Leetcode 313. Super Ugly Number
题目翻译成中文是『超级丑数』,啥叫丑数?丑数就是素因子只有2,3,5的数,7 14 21不是丑数,因为他们都有7这个素数。 这里的超级丑数只是对丑数的一个扩展,超级丑数的素因子不再仅限于2 3 5,而是由题目给定一个素数数组。与朴素丑数算法相比,只是将素因子变了而已,解法还是和朴素丑数一致的。
82 1
|
2月前
|
存储 SQL 算法
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode 题目 65:有效数字(Valid Number)【python】
|
3月前
|
存储 算法
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
【LeetCode力扣】单调栈解决Next Greater Number(下一个更大值)问题
26 0
|
9月前
|
存储
Leetcode Single Number II (面试题推荐)
给你一个整数数组,每个元素出现了三次,但只有一个元素出现了一次,让你找出这个数,要求线性的时间复杂度,不使用额外空间。
30 0
|
算法
LeetCode 414. Third Maximum Number
给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。
80 0
LeetCode 414. Third Maximum Number