`
wsql
  • 浏览: 11805456 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

特殊分页处理

阅读更多

原帖地址:
http://community.csdn.net/Expert/topic/3662/3662135.xml?temp=.4289972

--测试数据
create table tb(ID int primary key,grade varchar(10),uptime datetime)
insert tb select 1 ,'a','2004-12-11'
union all select 2 ,'b','2004-12-11'
union all select 3 ,'c','2004-12-11'
union all select 4 ,'a','2004-12-12'
union all select 5 ,'c','2004-12-13'
union all select 6 ,'c','2004-12-13'
union all select 7 ,'a','2004-12-14'
union all select 8 ,'a','2004-12-15'
union all select 9 ,'b','2004-12-16'
union all select 10,'b','2004-12-17'
union all select 11,'a','2004-12-17'
go

/*--分页处理要求

每页5条记录: c类2条 b类1条 a类2条
数据顺序,uptime desc,grade=c>b>a,id desc
某类不足时,由它的后续类补齐
--*/

--分页处理的存储过程
create proc p_split
@currentpage int=1, --要显示的当前页
@pagesize int=5 --每页的大小(如果调整了这个,则存储过程中,排序的处理也要做相应的修改,即:case grade when 'c' then 2 when 'b' then 1 when 'a' then 2 end 部分,这个控制每类/每页多少条记录as
set nocount on
set @currentpage=@currentpage*@pagesize
set rowcount @currentpage
select * into #t from tb a
order by ((select count(*) from tb where grade=a.grade and(uptime>a.uptime or uptime=a.uptime and id>=a.id))-1)
/case grade when 'c' then 2 when 'b' then 1 when 'a' then 2 end
,case grade when 'c' then 1 when 'b' then 2 when 'a' then 3 end,id desc
if @currentpage>@pagesize
begin
set @currentpage=@currentpage-@pagesize
set rowcount @currentpage
delete from #t
end
select * from #t
order by case grade when 'c' then 1 when 'b' then 2 when 'a' then 3 end
,uptime desc,id desc
go

--调用
exec p_split 1
exec p_split 2
exec p_split 3
go

--删除测试
drop table tb
drop proc p_split

/*--测试结果

ID grade uptime
----------- ---------- -------------------------
6 c 2004-12-13 00:00:00.000
5 c 2004-12-13 00:00:00.000
10 b 2004-12-17 00:00:00.000
11 a 2004-12-17 00:00:00.000
8 a 2004-12-15 00:00:00.000


ID grade uptime
----------- ---------- -------------------------
3 c 2004-12-11 00:00:00.000
9 b 2004-12-16 00:00:00.000
2 b 2004-12-11 00:00:00.000
7 a 2004-12-14 00:00:00.000
4 a 2004-12-12 00:00:00.000


ID grade uptime
----------- ---------- -------------------------
1 a 2004-12-11 00:00:00.000
--*/

分享到:
评论

相关推荐

    MaBatis中的分页插件以及特殊字符处理

    MaBatis中的分页插件以及特殊字符处理

    工作分享:JS分页处理

    工作中一些特殊场景,需要使用Javascript来进行分页的处理,自己纯手工写了一个分页处理。 分享给大家,可以作为参考学习,也可以拿来直接使用。谢谢你们!

    bootstrap-table 分页Demo

    可以实现查询、分页、排序、复选框、设置显示列、Card view视图、主从表显示、合并列、国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行、移动列位置等一些特殊的功能,插件可以用基于...

    PHP实现长文章分页实例代码(附源码)

    手动分页:一般在编辑内容时加入特殊分页标记,如{pages},提交后,PHP程序会根据分页符处理分页,生成不同的静态页面。这种分页方法分页准确,但是需要人工手动添加分页符,工作量大。 自动分页:PHP程序会根据设置...

    bootstrap-table分别实现前端和后端的分页项目

    可以实现查询、分页、排序、复选框、设置显示列、Card view视图、主从表显示、合并列、国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行、移动列位置等一些特殊的功能,插件可以用基于...

    gormjqdt:用于gorm的Golang jQuery数据表服务器端分页

    用于gorm的Golang jQuery数据表服务器端分页 :open_book: 要求 :rocket: 安装 该模块正在使用并且用于gorm(golang ORM模块),在使用该模块之前,请确保已安装gorm。 go get -u github....

    SQL SERVER 2000开发与管理应用实例

    7.3 特殊要求的分页处理 217 7.3.1 随机显示的分页处理 217 7.3.2 分类数据的分页处理 221 第 8 章 树形数据处理 223 8.1 单编号处理法 223 8.1.1 方法概述 223 8.1.2 逐级汇总 225 8.1.3 ...

    graphql-cursor-sql-helper:用于处理graphQl分页模式和SQL数据库的OFFSETLIMIT的辅助方法

    这个库是很棒的的扩展,它解决了如何简单地将cursor pagination实现到SQL的dbs查询而没有特殊魔术的问题。 如果要创建与中继光标分页( )兼容的GraphQl模式。 您可能使用库来使用辅助函数来定义您的模式。 ...

    sqlserver2000基础(高手也有用)

    7.3 特殊要求的分页处理 217 7.3.1 随机显示的分页处理 217 7.3.2 分类数据的分页处理 221 第 8 章 树形数据处理 223 8.1 单编号处理法 223 8.1.1 方法概述 223 8.1.2 逐级汇总 225 8.1.3 编码重排...

    使用bootstraptable插件实现表格记录的查询、分页、排序操作

    可以实现查询、分页、排序、复选框、设置显示列、Card view视图、主从表显示、合并列、国际化处理等处理功能,而且该插件同时也提供了一些不错的扩展功能,如移动行、移动列位置等一些特殊的功能,插件可以用基于...

    飞采 ninidown 信息采集 v1.1

    其灵活的规则制定,强大的分页处理,计划任务,对Access,Mysql,MSsql的数据库支持等功能,将有效节约您的宝贵时间,让工作变得更加轻松...... 特色介绍支持多任务、多线程:可以同时执行多个采集任务,每个任务又...

    C# Utils基础类帮助文档

    包括字符串处理、类型转换、日期处理、加密解密、文件操作、读写cookie、分页、http类处理、路径处理、过滤特殊字符、SQL安全处理、HTML标签处理等帮助类文档

    NET公共类库[转发]

    HTML格式辅助类 HtmlUtils.cs 处理HTML,脚本的特殊字符或过滤 数据压缩类 GZipHandler.cs 对传输的数据进行压缩 ?DLL Dll Name AjaxPro.dll AspNetPager.dll FreeTextBox.dll URLRewriter.dll Function Ajax控件 ...

    Java进制/时间/日期/字符串/流算法大全

    JAVA 时间格式化处理 将毫秒转化为日期 文本的倒序输出 判断一个数字是奇数还是偶数 用Hibernate 实现分页 35 选7 彩票程序 获取GMT8 时间 中文乱码转换 Big5 字与Unicode 的互换 取得服务器当前的各种具体时间 用...

    基于spring,struts(struts2),hibernate的web项目脚手架

    rapid-validation 集成extremeTable列表分页组件,并简单扩展显示pageNumber 集成DBUnit及spring对数据库测试的支持 内置的分页查询PageInfo接口 Java日期转换的特殊处理,与My97DatePicker集成 内置最精简的ant构建...

    经典SQL脚本大全

    │ │ 6.3.5 特殊的交叉报表处理示例.sql │ │ 6.4.1 库存明细帐处理示例(包含结存数).sql │ │ 6.4.1 库存明细帐处理示例.sql │ │ 6.4.2 同期及上期数据对比处理示例.sql │ │ 6.4.3 动态分组处理示例.sql │ ...

    计算机课程设计+ACCESS/SQL+学生成绩管理系统

    为了减少系统的数据资源,选用了目前最方便的将数据交给后台处理的方法,即使用SQL的语句将数据库交给ACCESS后台,由后台来处理,这样系统的执行会加快,也使用程序本身变得简单 本程序使用了新型控件flexcell,此...

    java 算法

    JAVA时间格式化处理 ,将毫秒转化为日期, 文本的倒序输出 ,判断一个数字是奇数还是偶数 ,用Hibernate实现分页, 35选7彩票程序 ,获取GMT8时间, 中文乱码转换 ,小标签 ,Big5字与Unicode的互换, 取得服务器...

    java实用工具包(新手型)

    针对2维表数据的分页。不针对各种不同数据库为了提高效力而使用的分页读取。 对各种有可能转化成2维表数据的数据先通过自定义的转化器转化成ArrayList(HashMap)或 ArrayList(javabean) 如果类型为ArrayList不需要...

Global site tag (gtag.js) - Google Analytics