
两次考勤:select 员工ID,TRUNC(TIME,'d') FROM 考勤表 group by 员工ID,TRUNC(TIME,'d')
having count()=2;
漏打:select 员工ID,TRUNC(TIME,'d') FROM 考勤表 group by 员工ID,TRUNC(TIME,'d')
having count()<2;
oracle:
select 考勤号,日期,wm_concat(时间) from 表 group by 考勤号,日期
sql:
select stuff((select ',' + 时间
from 表
where 日期 = a日期
and 考勤卡号 = a考勤卡号
for XML path('')),
1,
1,
'') 工号,
考勤卡号,
日期
From 表 a
group by 考勤卡号, 日期
再建立一个上班日期表,表内时应上班日期,因有节假日问题,如果是餐饮这种每人不固定的情况,只能建立人员上班情况表了。
建立存储过程
循环一,人员档案;
循环二,上班日期表,找出本月应上班的日期;
缺勤天数变量,签到表日期不在上班日期表的,为缺勤,count出天数
循环三,签到表;
缺勤时间,签到表中时间对不上,上下班时间的进行累计;
有请假、倒休、公休情况,找到对应的请假表,进行对比,调整缺勤天数和缺勤时间变量。
如果数据齐全还可以计算
如果存在忘记打卡现象
还要判断
就麻烦了
用datediff
DATEDIFF ( datepart , startdate , enddate )
小时用hour
DATEDIFF ( hour, startdate , enddate )
其他自行循环处理
以上就是关于sql语句实现考勤报表,sql语句怎样实现员工同一天只有两次考勤全部的内容,包括:sql语句实现考勤报表,sql语句怎样实现员工同一天只有两次考勤、sql数据库中多个考勤打卡数据,怎样按考勤号,日期合成一条、sql关于查询考勤系统查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)