每个员工各自日期的第一次最后一次超时



我有下表,我想从中提取计算的时间。我希望获得每位员工每天花费的小时数。

CREATE TABLE Attendance 
(
, EmpID INT
, TimeIn datetime
, TimeOut datetime
)

下面列出了我拥有的此表的示例记录。

EmpID | AttendanceTimeIN  |  AttendanceTimeOut
1       2017-04-01 9:00:00   2017-04-01 10:20:00
2       2017-04-01 9:00:00   2017-04-01 12:30:00 
1       2017-04-01 10:25:00  2017-04-01 17:30:00 
2       2017-04-01 13:26:00  2017-04-01 14:50:00 
2       2017-04-01 15:00:00  2017-04-01 18:00:00 
1       2017-04-02 9:00:00   2017-04-02 11:00:00 
1       2017-04-02 11:10:00  2017-04-02 12:00:00 
2       2017-04-02 9:00:00   2017-04-02 12:00:00 
1       2017-04-02 12:50:00  2017-04-02 18:00:00 
2       2017-04-02 12:51:00  2017-04-02 18:00:00   

我想获取每天的"首次入"和"最后超时"和"员工",以计算特定员工每天在办公室花费的小时数。 我对如何使用最小/最大功能感到困惑,这样我就可以每天为两个员工提供小时数。 我正在寻找的结果集应如下所示。

EmpID | AttendanceTimeIN  |  AttendanceTimeOut
1       2017-04-01 9:00:00   2017-04-01 17:30:00
2       2017-04-01 9:00:00   2017-04-01 18:00:00 
1       2017-04-02 9:00:00   2017-04-02 18:00:00 
2       2017-04-02 9:00:00   2017-04-02 18:00:00

任何帮助将不胜感激。 谢谢

如果您的 TimeIn 和 TimeOut 是日期时间类型(它们应该是!),则此解决方案适用于我所做的测试:

SELECT
EmpID
, MIN(TimeIn)
, MAX(TimeOut)
FROM Attendance
GROUP BY EmpID, CAST(TimeIn AS DATE)

GROUP BY子句意味着每个员工和每天有一行,因为CASTDATE去掉了时间部分。MINMAX本质上是有效的。

相关内容

最新更新