如何计算每个会话的员工总工作时间



我需要显示一天中每个会话的员工登录和注销时间,并计算总工作时间。如果员工登录和注销多次,则应显示每次会话和总数。

我的表将是这样的

OutType2012-05-25 17:31:30.3332012-05-25 19:31:38.9732012-05-26 12:21:38.973

您可以通过外部应用来实现这一点。
我不知道OutType用于什么,与AccessType的区别是什么。你没有解释这一点或任何其他逻辑,所以我只是假设它应该在AccessType上工作。
如果不是这种情况,您可以轻松地在下面的子查询中调整逻辑。

select e.EmpId,
e.LocationID,
e.logdate as SessionStart,
d.logdate as SessionEnd,
datediff(hour, e.logdate, d.logdate) as Hours
from   emp e
outer apply ( select top 1 emp.logdate
from   emp
where  emp.empid = e.empid
and    emp.accesstype = 2
and    emp.logdate > e.logdate
order by emp.logdate
) d
where  e.accesstype = 1

查看此处的DBFiddle

结果

tbody> <<tr>1212 _8
EmpIdLocationIDSessionStartSessionEndHours
4545 _145452022-05-25 16:27:41.2172022-05-25 17:27:26.6731
4545 _145452022-05-25 17:31:30.3332022-05-25 19:31:38.9732
12122022-05-26 10:21:38.9732022-05-26 12:21:38.9732

最新更新