我正在尝试制作一份计算夜班员工休息时间的报告。但是有问题。让我们说夜班时间是从第二天早上9点到早上6点。根据该计划,如果员工没有休息,并且很容易计算checkout1和checkout2工作差异的持续时间,则考勤详情如下:
emp_num checkin1 checkout1
81111 2014-08-21 21:38:06.000 2014-08-22 06:00:10.000
当他在班次凌晨2点休息时,会创建一条新记录。由于有多个记录,我无法计算工作的持续时间。请帮助
emp_num checkin1 checkout1
81111 2014-08-21 21:38:06.000 2014-08-22 02:00:10.000
81111 2014-08-22 02:30:00.000 2014-08-22 06:00:10.000
答案 0 :(得分:0)
我创建了一个临时表并上传了您的数据。
create table #employee (EmpID int, CheckIn Datetime, CheckOut Datetime, HoursWorked time)
然后我插入了如下所示的数据。
EmpID CheckIn CheckOut
1 2014-08-21 21:38:06.000 2014-08-22 06:00:10.000
2 2014-08-21 21:38:06.000 2014-08-22 02:00:10.000
2 2014-08-22 02:30:00.000 2014-08-22 06:00:10.000
我将HoursWorked列更新为
update #employee set HoursWorked = CheckOut - CheckIn
下面的select语句给出了所需的输出。
SELECT EmpID,SUM(DATEPART(HOUR,hoursworked))AS HoursWorked,
SUM(DATEPART(MINUTE,hoursworked))AS MinutesWorked,
SUM(DATEPART(SECOND,hoursworked))AS SecondsWorked FROM #employee
GROUP BY EmpID
EmpID HoursWorked MinutesWorked SecondsWorked
1 8 22 4
2 7 52 14
如果有任何错误或捷径,请告诉我。从9开始的工作时间为您提供休息时间。