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

如何取同一天同一个人的最早和最晚的纪录??
数据库表为timerecords,里面纪录了每天的员工刷卡的卡号:card_id和时间:sign_time,每个卡号都有多条纪录,现在需要根据每天的刷卡时间来纪录考勤情况,也就是只留下每天每个员工刷卡最早的一次和最晚的一次刷卡纪录,中间其他的纪录删除掉.请高手指教!!

------解决方案--------------------
SQL code
delete a from 表 a
where exists(
select 1 from 表 where id=a.id and 
time <>(select min(time) from 表 where id=a.id )
and 
time <>(select max(time) from 表 where id=a.id )
)

------解决方案--------------------
--显示为两条记录
SQL code

select 
    *
from 
    timerecords a
where
    sign_time=(select max(sign_time) from timerecords where card_id=a.card_id and datediff(d,sign_time,a.sign_time )=0)
or
    sign_time=(select min(sign_time) from timerecords where card_id=a.card_id and datediff(d,sign_time,a.sign_time )=0)