Sql 如何从考勤日志中生成先进先出
我有一个现有的考勤日志,我想根据日期获取每个员工的第一名和最后一名,可以查询什么 已尝试使用MAX()和MIN()函数 下面是示例数据Sql 如何从考勤日志中生成先进先出,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个现有的考勤日志,我想根据日期获取每个员工的第一名和最后一名,可以查询什么 已尝试使用MAX()和MIN()函数 下面是示例数据 username date time ---------------------------------------- user1 07-01-2019 7:20:00 user1 07-01-2019 7:25:00 user2 07-01
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
选择[user name]、concat([date]、“”,[time])作为测试的输入输出,其中[user name]!=“”inout asc订购
通过inout desc从测试订单中选择[user name]、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
尝试(未测试)
假设您希望在同一日期输入和输出时间。使用
MAX()
和MIN()
函数的结果是什么?为什么这不起作用?
SELECT
username,
date,
MIN(time) AS timeIn,
MAX(time) AS timeOut
FROM
test
GROUP BY
username,
date
ORDER BY
username,
date