sql语句实现考勤报表,sql语句怎样实现员工同一天只有两次考勤

sql语句实现考勤报表,sql语句怎样实现员工同一天只有两次考勤,第1张

两次考勤: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关于查询考勤系统查询等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10140032.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存