我有以下表格,我想从中提取计算的时间。我希望每个员工每天花费的时间。
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
我想获得每天的First TimeIn和Last TimeOut以及员工每天计算特定员工在办公室花费的时间。 我有点困惑,如何使用Min / Max功能,这样我每天都可以获得两个员工的工作时间。 我正在寻找的结果集应该是这样的。
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
任何帮助都将受到高度赞赏。 谢谢
答案 0 :(得分:1)
如果您的TimeIn和TimeOut是日期时间类型(它们应该是!),此解决方案适用于我所做的测试:
SELECT
EmpID
, MIN(TimeIn)
, MAX(TimeOut)
FROM Attendance
GROUP BY EmpID, CAST(TimeIn AS DATE)
GROUP BY
子句意味着每个员工每天都有一行,因为CAST
到DATE
摆脱了时间部分。 MIN
和MAX
然后就固有地工作了。