ALTER proc [dbo].[GetD_OrderInfoCollectionForPaging]

(

@PageIndex int,     ----当前的页码

@PageSize int,  ----每页显示多少条

@RecordCount int output,----总条数

@PageCount int output , ----总页数

@TransactionType nvarchar(4000),-------交易类型编号

@BusinessStatus nvarchar(4000),----交易状态

@StrSeach nvarchar(4000),------搜索条件

----------排序标示:   0 无排序,1 升序 ,2 降序

@OrderNum char(1),--------按照数量排序的标示

@OrderMoney char(1),------按照金额排序的标示

@OrderCreate char(1),-----按照交易时间排序的标示

@OrderDiff char(1)----按照剩余时间排序的标示

)

as

begin

declare @JPWhere  varchar(4000)----条件字符串

declare @JPBy   varchar(4000) ----排序字符串(内层的)

declare @JPByOut  varchar(4000)----排序字符串(外层的)

declare @val nvarchar(4000)----定义一个参数用来接收T-SQL语句

declare @sql nvarchar(4000)----定义一个参数用来接收T-SQL语句

-----初次或者没有条件筛选,加载所有信息

IF(@TransactionType='0' and @BusinessStatus='0'  and (@StrSeach=''or  @StrSeach is null ) and @OrderNum='0' and @OrderMoney='0' and @OrderCreate='0' and @OrderDiff='0')

begin

set @JPWhere='where 1=1 '

set @JPBy=' order by o.CreateTime desc '

set @JPByOut=' order by t.CreateTime desc '

end

-----有条件进行筛选

else

begin

set @JPWhere='Where 1=1 '

set @JPBy='order by o.CreateTime desc  '

set @JPByOut=' order by t.CreateTime desc '

if(@TransactionType!='0')--按照类别查询

begin

set @JPWhere= @JPWhere+ ' and o.TransactionType

='+@TransactionType

end

if(@BusinessStatus!='0')--按照状态查询

begin

set @JPWhere=@JPWhere+' and

o.BusinessStatus='+@BusinessStatus

end

if(@StrSeach!='')---模糊查询

begin

set @JPWhere=@JPWhere+' and o.OrderCode like '''+ @StrSeach+'%'''  +' or p.ProjectName like

'''+@StrSeach+'%'''

end

if(@OrderNum='1')---按照数量排序

begin

set @JPBy=' order by  im.num asc '

set @JPByOut=' order by t.num asc '

end

if(@OrderNum='2')

begin

set @JPBy=' order by  im.num desc '

set @JPByOut=' order by t.num desc '

end

if(@OrderMoney='1')---按照金额排序

begin

set @JPBy=' order by  o.BusinessAmount asc '

set @JPByOut=' order by  t.BusinessAmount asc '

end

if(@OrderMoney='2')

begin

set @JPBy=' order by  o.BusinessAmount desc '

set @JPByOut=' order by  t.BusinessAmount desc '

end

if(@OrderCreate='1')---按照时间排序

begin

set @JPBy=' order by o.CreateTime asc '

set @JPByOut=' order by t.CreateTime asc '

end

if(@OrderCreate='2')

begin

set @JPBy=' order by o.CreateTime desc '

set @JPByOut=' order by t.CreateTime desc '

end

if(@OrderDiff='1')---按照剩余时间排序

begin

set @JPBy=' order by  DATEDIFF(HH,o.CreateTime,o.FinishDate) asc'

set @JPByOut=' order by t.Diff asc '

end

if(@OrderDiff='2')

begin

set @JPBy=' order by  DATEDIFF(HH,o.CreateTime,o.FinishDate) desc'

set @JPByOut=' order by t.Diff desc '

end

end

set @val='select @count=count(1) from( select ROW_NUMBER() over('

+@JPBy+ ') rowNumber, o.OrderCode,p.ProjectName,o.TransactionType,im.num,c.CustomerName sellerName,e.CustomerName buyName,o.BusinessAmount,'

+' o.CreateTime,DATEDIFF(HH,o.CreateTime,o.FinishDate) Diff,o.BusinessStatus'

+' from D_OrderInfo o'

+' left join D_ProjectInfo p on p.ProjectID=o.ProjectID'

+' left join (select i.ProjectID,COUNT(*) num from D_ProjectImageInfo i where i.IsDeleted=0 or i.IsDeleted is null group by i.ProjectID) im on im.ProjectID=o.ProjectID'

+' left join E_CustomerInfo c on c.CustomerID=o.Seller'

+' left join E_CustomerInfo e on e.CustomerID=o.CreatorID

'+@JPWhere+' ) t'

-----执行这条拼接的字符串

--exec(@val)

--print (@val)

----执行过以后,会创建出来一张全局表##temp(里面包含所有的条件过滤后的数据)

----查询出来总共的记录数

--select  @RecordCount = COUNT(1) from ##tablejp

EXEC sp_executesql @val,

N'@count int output',@RecordCount OUTPUT

----查询出来总共的页数

SET @PageCount = CEILING(@RecordCount * 1.0 / @PageSize)

----对查询的数据集进行分页

set @sql='select  OrderCode,TransactionType,BusinessAmount,

CreateTime,BusinessStatus,Convert(nvarchar,isnull(num,0))+'';''+isnull(sellerName,'''')+'';''+isnull(buyName,'''')+'';''+Convert(nvarchar,isnull(Diff,0))+'';''+isnull(ProjectName,'''') Remark

from (select ROW_NUMBER() over('

+@JPBy+ ') rowNumber, o.OrderCode,p.ProjectName,o.TransactionType,im.num,c.CustomerName sellerName,e.CustomerName buyName,o.BusinessAmount,

o.CreateTime,DATEDIFF(HH,o.CreateTime,o.FinishDate) Diff,o.BusinessStatus

from D_OrderInfo o

left join D_ProjectInfo p on p.ProjectID=o.ProjectID

left join (select i.ProjectID,COUNT(*) num from D_ProjectImageInfo i where i.IsDeleted=0 or i.IsDeleted is null group by i.ProjectID) im on im.ProjectID=o.ProjectID

left join E_CustomerInfo c on c.CustomerID=o.Seller

left join E_CustomerInfo e on e.CustomerID=o.CreatorID

'+@JPWhere+') t where rowNumber between ' + STR(@PageIndex * @PageSize + 1) + ' and ('

+ STR(@PageIndex + 1) + ') * ' + STR(@PageSize) + '

'+@JPByOut             print @sql  EXEC sp_executesql @sql end

java高并发临时表_不适用临时表进行分页,筛选,查询,避免高并发的方法。...相关推荐

  1. java开发高端说法_扣丁学堂教你如何成为JavaEE高端开发人才

    俗话说干一行爱一行,行行出状元.这句话在如今飞速发展的互联网时代依然实用,如今不少参加学习技术的小伙伴都希望自己可以成为专业的高端开发人才,本篇文章扣丁学堂教你如何成为高端开发人才. 互联网时代,对人 ...

  2. window服务器cpu过高的排查_线上服务器发生CPU占用率过高应该如何排查并定位问题?...

    国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果显示如下: 排名前几的比较受重视的能力分别为:解决问题 ...

  3. python编写高质量代码_用 Python 编写干净、可测试、高质量的代码

    用 Python 编写干净.可测试.高质量的代码 Noah Gift 2010 年 12 月 20 日发布 简介 编写软件是人所承担的最复杂的任务之一.AWK 编程语言和 "K and R ...

  4. java 仿qq空间_仿QQ空间和微信朋友圈,高解耦高复用高灵活

    先看看效果: 用极少的代码实现了 动态详情 及 二级评论 的 数据获取与处理 和 UI显示与交互,并且高解耦.高复用.高灵活. 动态列表界面MomentListFragment支持 下拉刷新与上拉加载 ...

  5. java的车性价比好高 质量如何_买贵不如买对,三款高性价比好车推荐,个个都被市场认可!...

    拼多多的上市引起了国人关于消费升级还是降级的讨论,有人说,拼多多的火爆说明了中国经济紧缩,消费降级的现状.有人说,从前买不起电视的人用上了电视,这是消费升级.其实这两种观点的讨论关键在于国人能否用上物 ...

  6. 我的世界java版游戏崩溃_我的世界全攻略之-游戏崩溃的解决方法

    我的世界崩溃怎么办?下面吾爱网小编给大家带来我的世界无法正常启动的解决方法,需要的朋友可以参考下. 我的世界作为许多玩家都十分喜爱的模拟经营沙盘类游戏,经常有玩家反映在玩我的世界的时候,游戏总是会出现 ...

  7. java bean 数据库表_如何从数据库的表格自动生成javabean,包含get/set方法等

    Torque是一种ORM的工具,它最早是Apache  Jakarta  Turbine项目的一部分,现在已经从Turbine中剥离出来,可以独立使用.目前,它的版本是3.0. Torque的主要特性 ...

  8. java双缓存机制_详解JVM类加载机制及类缓存问题的处理方法

    前言 大家应该都知道,当一个Java项目启动的时候,JVM会找到main方法,根据对象之间的调用来对class文件和所引用的jar包中的class文件进行加载(其步骤分为加载.验证.准备.解析.初始化 ...

  9. python壁纸高清图片_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

最新文章

  1. 根据镜像安装oracle插件,docker镜像alpine中安装oracle客户端
  2. gitee项目能用SVN拉取吗_用好 Git 和 SVN,轻松驾驭版本管理
  3. 八大排序算法的 Python 实现
  4. ORACLE 中为什么要把列名都转换成大写字母?
  5. Codeforces Round #709 (Div. 2, based on Technocup 2021 Final Round) 题解
  6. 基础编程题目集 6-10 阶乘计算升级版 (20 分)
  7. PHP中的数组建必须为数字吗,PHP检查数组中缺少的数字
  8. jquery上传图片插件(支持各种功能)
  9. appfuse mysql_Appfuse:起步
  10. SPI转can芯片CSM300详解以及Linux驱动移植调试笔记
  11. python之禅中文原文_Python之禅翻译
  12. 骨传导耳机是什么意思?骨传导耳机工作原理是什么
  13. 贪心问题(Python代码实现)——磁带最优存储问题
  14. 电机编码器调零步骤_各种编码器调零方法
  15. 关于markdown图片显示
  16. 程序员在面试时,如何回答未来规划方面的问题
  17. 解决svn冲突的办法
  18. 求最大连续区间和的几种方法
  19. 重庆市计算机专业高考试题,职业高中高考计算机专业试卷5
  20. Vue对接Spring Security

热门文章

  1. Python3十大经典错误及解决办法
  2. Logistic Regression逻辑回归的简单解释
  3. 数据库查询:列出各个部门中工资高于本部门平均工资的员工信息,并按部门号排序。
  4. AJAX 中Sys.WebForms.PageRequestManager的事件激发顺序
  5. asp.net在IIS7中更改网站的.net framework框架版本
  6. IaaS, PaaS和SaaS公司都做些什么
  7. Python《使用selenium解决动态加载的问题》
  8. 漫步最优化十九——封闭算法
  9. [机器学习-实践篇]贝叶斯算法
  10. hadoop java配置环境变量_hadoop2.7.2修改配置文件,配置linux java环境变量