怎样在一个时间段内记录,只取最早的一条记录?

原创 2006年05月19日 16:02:00

表:

工号        日期
--------------------------------
12006-03-15 08:00:40.000
12006-03-15 18:10:35.000
12006-03-15 18:10:36.000
22006-03-15 07:54:45.000
22006-03-15 18:10:03.000
32006-03-15 07:59:46.000
32006-03-15 07:59:47.000
32006-03-15 19:15:30.000
42006-03-15 08:03:47.000
42006-03-15 19:41:08.000
52006-03-15 19:41:09.000

结果(同一工号日期在5分钟范围内的记录,只取最早的一条记录):
工号        日期
---------------------------------
12006-03-15 08:00:40.000
12006-03-15 18:10:35.000
22006-03-15 07:54:45.000
22006-03-15 18:10:03.000
32006-03-15 07:59:46.000
32006-03-15 19:15:30.000
42006-03-15 08:03:47.000
42006-03-15 19:41:08.000
52006-03-15 19:41:09.000

declare @tbl table (工号 int,日期 datetime)
insert into @tbl
select 1,'2006-03-15 08:00:40.000'
union select 1,'2006-03-15 18:10:35.000'
union select 1,'2006-03-15 18:10:36.000'
union select 2,'2006-03-15 07:54:45.000'
union select 2,'2006-03-15 18:10:03.000'
union select 3,'2006-03-15 07:59:46.000'
union select 3,'2006-03-15 07:59:47.000'
union select 3,'2006-03-15 19:15:30.000'
union select 4,'2006-03-15 08:03:47.000'
union select 4,'2006-03-15 19:41:08.000'
union select 5,'2006-03-15 19:41:09.000'

select * from @tbl as a
where not exists(
  select * from @tbl where 工号=a.工号 and
     abs(datediff(Second,日期,a.日期))<=300 and a.日期<日期)

declare @tbl table (工号 int,日期 datetime)
insert into @tbl
      select 1,'2006-03-15 08:00:40.000'
union select 1,'2006-03-15 18:10:35.000'
union select 1,'2006-03-15 18:10:36.000'
union select 2,'2006-03-15 07:54:45.000'
union select 2,'2006-03-15 18:10:03.000'
union select 3,'2006-03-15 07:59:46.000'
union select 3,'2006-03-15 07:59:47.000'
union select 3,'2006-03-15 19:15:30.000'
union select 4,'2006-03-15 08:03:47.000'
union select 4,'2006-03-15 19:41:08.000'
union select 5,'2006-03-15 19:41:09.000'

select distinct a.*
from
    @tbl a
where
    not exists(select
                   1
               from
                   @tbl
               where
                   工号=a.工号
                   and
                   (datediff(ss,日期,a.日期) between 1 and 300))

 

 

相关文章推荐

判断是否在某一个时间段内的处理

前段时间项目中有这样的一个需求:在工作日内的早上 09:30-11:30和下午13:00-15:00这2各时间段内就不需要检测版本更新。反之则反。 其中这有2个问题需要处理:我们怎么知道当前时间是否...

解决一个mysql关于按文章以及评论的最早时间的排序问题

问题是: 有个文章列表要显示文章  如果文章时间发布的越近的越靠前  时间一样看评论 如果评论越近的越靠前,有点像论坛的帖子列表 抽象出来的问题就是: 按 time1,time2中较大者的顺...

mysql导入打卡记录,查询员工每天最早上班时间和最晚下班时间

1、在数据库新建表card_records,根据打卡记录字段新建表的字段,新增id字段(自增) 2、利用navicat连接mysql数据库,导入打卡记录 右键新建的表,右键导入向导,选择导入的文件...

jquery 做的一个时间验证

  • 2010年07月30日 07:29
  • 451KB
  • 下载

Spring Quartz任务调度示例(指定一个时间触发调度任务)

 --1.创建一个类,类中方法doAuth(),对这个方法进行触发package com.xzl.quartz;import org.apache.log4j.Logger; public clas...

一个时间转换小功能

  • 2015年08月07日 14:38
  • 11KB
  • 下载

一个时间戳修改器^_^

  • 2009年07月02日 18:18
  • 401KB
  • 下载

一个时间函数

public static DateTime GetAnnDate(DateTime curDate, int freqencyType, int day, int month, int countT...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎样在一个时间段内记录,只取最早的一条记录?
举报原因:
原因补充:

(最多只允许输入30个字)