我可以使用 min 和 max来让FirstIn - LastOut离开白班员工:
select
UserId,
[date],
min(convert(char(5), [Login], 108)) as FirstIN,
max(convert(char(5), LogOut,108)) as LastOUT
from Employee
group by UserId, [date]
Run Code Online (Sandbox Code Playgroud)
但我不能为夜班员工做,比如下午 5:30 到第二天早上 2:30。同一天(第二天)他们将在下午 5:30 再次到来。
select
UserId,
[date],
min(convert(char(5), [Login], 108)) as FirstIN,
max(convert(char(5), LogOut,108)) as LastOUT
from Employee
group by UserId, [date]
Run Code Online (Sandbox Code Playgroud)
UserID ShiftName Start End
2267 Night Shift-1 17:30 02:30
Run Code Online (Sandbox Code Playgroud)
UserID LogIn LogOut LogDate
2267 2016-01-04 20:52:08.000 2016-01-04 22:09:22.000 2016-01-04 00:00:00.000
2267 2016-01-04 23:00:07.000 2016-01-04 23:00:07.000 …
Run Code Online (Sandbox Code Playgroud)