日期:2014-05-18  浏览次数:20649 次

如何取在某一个时间范围内取最前或最后一笔记录
在任何时刻某个时间(如5分钟)范围内如果连续签到,如何取第一笔或最后一笔?比如1000002在07:30到07:32分钟内连续签到3笔,我想取第一笔或最后一笔有效。



0 1000002 2012-04-10 07:00:18.000 4 0 2012-04-10 16:42:38.500
2 1000002 2012-04-10 07:30:03.000 4 0 2012-04-10 16:42:38.560
8 1000002 2012-04-10 07:31:03.000 4 0 2012-04-10 16:43:05.890
9 1000002 2012-04-10 07:32:03.000 4 0 2012-04-10 16:43:11.373
1 1000002 2012-04-10 08:00:11.000 4 0 2012-04-10 16:42:38.560
3 1000002 2012-04-10 17:30:21.000 4 0 2012-04-10 16:42:38.560
4 1000002 2012-04-10 18:00:24.000 4 0 2012-04-10 16:42:38.560
10 1000002 2012-04-10 18:01:24.000 4 0 2012-04-10 16:43:23.590
11 1000002 2012-04-10 18:02:24.000 4 0 2012-04-10 16:43:29.390
5 1000002 2012-04-10 18:30:12.000 4 0 2012-04-10 16:42:38.560
7 1000002 2012-04-10 18:31:11.000 4 0 2012-04-10 16:42:38.560
6 1000002 2012-04-10 18:31:32.000 4 0 2012-04-10 16:42:38.560

------解决方案--------------------
select *
from tb t
where not exists(select 1 from tb where id=t.id and datediff(mm,time,t.time)<5)

这个是取第一笔的,没有进行测试