[求救] 如何合并相时间相近的记录?

clerkie 2007-10-09 01:07:01
在我们公司的考勤表里,可能员工为了怕打卡没通过而重复打卡,会有以下时间几乎相同的数据,如下:

姓名 编号 卡号 日期 星期 时间
----------------------------------------------------------------
张三 558 15609018 2007-10-01 1 07:52:03
张三 558 15609018 2007-10-01 1 07:52:11
张三 558 15609018 2007-10-01 1 07:52:16
张三 558 15609018 2007-10-01 1 07:52:20
张三 558 15609018 2007-10-01 1 07:52:29
张三 558 15609018 2007-10-01 1 07:52:36
张三 558 15609018 2007-10-01 1 18:09:39
张三 558 15609018 2007-10-01 1 18:09:43
张三 558 15609018 2007-10-02 2 08:44:02
张三 558 15609018 2007-10-02 2 08:44:11
张三 558 15609018 2007-10-02 2 08:44:16
张三 558 15609018 2007-10-02 2 08:44:20
张三 558 15609018 2007-10-02 2 08:44:24
张三 558 15609018 2007-10-02 2 08:44:33
张三 558 15609018 2007-10-02 2 08:44:37
张三 558 15609018 2007-10-02 2 17:15:09


如何做才能合并时间为5分钟内的考勤记录呢,即多个考勤记录,如果时间只相差5分钟内,即只要显示最早的那条考勤记录即可,其它的不用显示。我想要的合并结果如下:

姓名 编号 卡号 日期 星期 时间
----------------------------------------------------------------
张三 558 15609018 2007-10-01 1 07:52:03
张三 558 15609018 2007-10-01 1 18:09:39
张三 558 15609018 2007-10-02 2 08:44:02
张三 558 15609018 2007-10-02 2 17:15:09

小弟对SQL了解得不多,请各位高手帮忙,谢谢了!!!
...全文
112 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
clerkie 2007-10-09
  • 打赏
  • 举报
回复
非常感谢楼上的兄弟,一下子解决了困扰了我半天的问题。。。

立即结贴。
子陌红尘 2007-10-09
  • 打赏
  • 举报
回复
--创建测试数据
create table test(姓名 varchar(8),编号 int,卡号 int,日期 varchar(10),星期 int,时间 varchar(10))
insert into test values('张三',558,15609018,'2007-10-01',1,'07:52:03')
insert into test values('张三',558,15609018,'2007-10-01',1,'07:52:11')
insert into test values('张三',558,15609018,'2007-10-01',1,'07:52:16')
insert into test values('张三',558,15609018,'2007-10-01',1,'07:52:20')
insert into test values('张三',558,15609018,'2007-10-01',1,'07:52:29')
insert into test values('张三',558,15609018,'2007-10-01',1,'07:52:36')
insert into test values('张三',558,15609018,'2007-10-01',1,'18:09:39')
insert into test values('张三',558,15609018,'2007-10-01',1,'18:09:43')
insert into test values('张三',558,15609018,'2007-10-02',2,'08:44:02')
insert into test values('张三',558,15609018,'2007-10-02',2,'08:44:11')
insert into test values('张三',558,15609018,'2007-10-02',2,'08:44:16')
insert into test values('张三',558,15609018,'2007-10-02',2,'08:44:20')
insert into test values('张三',558,15609018,'2007-10-02',2,'08:44:24')
insert into test values('张三',558,15609018,'2007-10-02',2,'08:44:33')
insert into test values('张三',558,15609018,'2007-10-02',2,'08:44:37')
insert into test values('张三',558,15609018,'2007-10-02',2,'17:15:09')

--执行查询语句
select
t.*
from
test t
where
not exists(select
1
from
test
where
卡号=t.卡号
and
日期=t.日期
and
datediff(ss,cast(时间 as datetime),cast(t.时间 as datetime)) between 1 and 300)

--输出查询结果
/*
姓名 编号 卡号 日期 星期 时间
-------- ----------- ----------- ---------- ----------- ----------
张三 558 15609018 2007-10-01 1 07:52:03
张三 558 15609018 2007-10-01 1 18:09:39
张三 558 15609018 2007-10-02 2 08:44:02
张三 558 15609018 2007-10-02 2 17:15:09
*/

--删除测试表格
drop table test

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧