我有一个现有的出勤记录,我想根据日期获取每个员工的第一个进场和最后一个出场,这是什么查询?
已经尝试使用MAX()和MIN()函数
下面的示例数据
username date time
----------------------------------------
user1 07-01-2019 7:20:00
user1 07-01-2019 7:25:00
user2 07-01-2019 7:40:00
user2 07-01-2019 7:42:00
user3 07-01-2019 7:45:00
user3 07-01-2019 7:47:00
user1 07-01-2019 12:00:00
user1 07-01-2019 12:15:00
user2 07-01-2019 12:15:00
user2 07-01-2019 12:40:00
user3 07-01-2019 12:20:00
user3 07-01-2019 12:25:00
user1 07-03-2019 7:20:00
user1 07-03-2019 7:25:00
user2 07-03-2019 7:40:00
user2 07-03-2019 7:42:00
user3 07-03-2019 7:45:00
user3 07-03-2019 7:47:00
user1 07-03-2019 12:00:00
user1 07-03-2019 12:15:00
user2 07-03-2019 12:15:00
user2 07-03-2019 12:40:00
user3 07-03-2019 12:20:00
user3 07-03-2019 12:25:00
从测试中选择[用户名],concat([日期],'',[时间])作为inout,其中[用户名]!=''由inout asc排序 通过inout desc从测试顺序中选择[用户名],concat([date],'',[time])作为inout
我希望下面的输出
username date timeIn timeOut
--------------------------------------------------------------
user1 07-01-2019 7:20:00 12:15:00
user2 07-01-2019 7:40:00 12:40:00
user3 07-01-2019 7:45:00 12:25:00
user1 07-03-2019 7:20:00 12:00:00
user2 07-03-2019 7:40:00 12:40:00
user3 07-03-2019 7:45:00 12:25:00
答案 0 :(得分:3)
尝试(未测试)
SELECT
username,
date,
MIN(time) AS timeIn,
MAX(time) AS timeOut
FROM
test
GROUP BY
username,
date
ORDER BY
username,
date
假设您要在同一日期超时和超时。