刷卡进出数据存储在同一表中,姓名有重复的,一个人可能刷了2次,要求选出在时间段2014-12-28 11:00:00到2014-12-28 13:00:00内两次刷卡记录时间间隔大于等于40分钟的员工
logtime (时间 )logcard (卡号 )logid (员工号) logname(姓名) logbm (部门)
sql server在同一表中筛选出两次刷卡记录时间大于等于40分钟的员工数据
答案:3 悬赏:70 手机版
解决时间 2021-02-06 05:08
- 提问者网友:兔牙战士
- 2021-02-05 21:30
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-02-05 22:01
一个员工只有一张卡吗?以下语句假设一个员工只有一张卡:
select A1.logname,A1.logcard,A1.logid,A1.logbm,A1.logtime 第一次刷卡时间,A2.logtime 第二次刷卡时间
from 表 A1 join 表 A2 ON A1.logcard=A2.logcard
WHERe A2.logtime=(SELECt MIN(logtime) FROM 表 WHERe logcard=A1.logcard AND logtime>A1.logtime)
AND DATEDIFF(MINUTE,A1.logtime,A2.logtime)>40
AND A1.logtime BETWEEN '2014-12-28 11:00:00' AND '2014-12-28 13:00:00' AND
A2.logtime BETWEEN '2014-12-28 11:00:00' AND '2014-12-28 13:00:00'
select A1.logname,A1.logcard,A1.logid,A1.logbm,A1.logtime 第一次刷卡时间,A2.logtime 第二次刷卡时间
from 表 A1 join 表 A2 ON A1.logcard=A2.logcard
WHERe A2.logtime=(SELECt MIN(logtime) FROM 表 WHERe logcard=A1.logcard AND logtime>A1.logtime)
AND DATEDIFF(MINUTE,A1.logtime,A2.logtime)>40
AND A1.logtime BETWEEN '2014-12-28 11:00:00' AND '2014-12-28 13:00:00' AND
A2.logtime BETWEEN '2014-12-28 11:00:00' AND '2014-12-28 13:00:00'
全部回答
- 1楼网友:青尢
- 2021-02-05 22:54
select a1.logname,a1.logcard,a1.logid,a1.logbm,a1.logtime 第一次刷卡时间,a2.logtime 第二次刷卡时间
from 表 a1 join 表 a2 on a1.logcard=a2.logcard
where a2.logtime=(select min(logtime) from 表 where logcard=a1.logcard and logtime>a1.logtime)
and datediff(minute,a1.logtime,a2.logtime)>40
and a1.logtime between '2014-12-28 11:00:00' and '2014-12-28 13:00:00' and
a2.logtime between '2014-12-28 11:00:00' and '2014-12-28 13:00:00'
- 2楼网友:几近狂妄
- 2021-02-05 22:12
select * from t_kaoqin a,t_kaoqin b where a.logcard = b.logcard and a.logtime < b.logtime and datediff(minute,a.logtime,b.logtime) >= 40
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |