SQLServer分组查询相邻两条记录的时间差
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SQLServer分组查询相邻两条记录的时间差,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1452字,纯文字阅读大概需要3分钟。
内容图文
首先,我们通过数据库中表的两条记录来引出问题,如下图 以上为一个记录操作记录的表数据。OrderID为自增长列,后面依次为操作类型,操作时间,操作人。 现在的问题是:要求筛选出数据库中从接收到送出的时间差超过2天的全部记录。即如上图两笔单据中,红色
首先,我们通过数据库中表的两条记录来引出问题,如下图
以上为一个记录操作记录的表数据。OrderID为自增长列,后面依次为操作类型,操作时间,操作人。
现在的问题是:要求筛选出数据库中从“接收”到“送出”的时间差超过2天的全部记录。即如上图两笔单据中,红色框既是要筛选出的,绿色框为正常过滤的。
为了定位相邻记录,方法为给查询语句的返回记录加个自动编号列放入临时表中,再对临时表进行操作。
View Code
--1.首先查出表中符合條件的所有信息 select IDENTITY(int,1,1) as OIndex,* into #temp1 from 操作記錄表 where OrderID in (select OrderID from 單據表 where OrderNo like 'APP%') order by OrderID,OperateDate --2.簽核時間Delay在2~7天之內 select a.OrderID,a.OperateUser,a.OperateName into #temp2 from #temp1 a inner join #temp1 b on a.OrderID=b.OrderID and a.OperateUser=b.OperateUser and a.OperateType='Receive' and b.OperateType='Send' and b.OIndex = a.OIndex+1 where datediff(dd,a.operatedate,b.operatedate)>2 and datediff(dd,a.operatedate,b.operatedate)<=7 and a.operatedate>='2012-06-10' group by a.OrderID,a.OperateUser,a.OperateName order by a.OrderID --3.異常單據和異常操作人員信息 select * from #temp2
可以看出,关键在分组查询后对数据的比对。
内容总结
以上是互联网集市为您收集整理的SQLServer分组查询相邻两条记录的时间差全部内容,希望文章能够帮你解决SQLServer分组查询相邻两条记录的时间差所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。