Sql 如何从考勤日志中生成先进先出

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

我有一个现有的考勤日志,我想根据日期获取每个员工的第一名和最后一名,可以查询什么

已尝试使用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
选择[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