Muh*_*eem 3 sql sql-server sql-server-2008
我有以这种格式出现的出勤数据:
EmployeeId | Date | Time |
--------------------------------------
1 | 01/01/2015 | 14:01:35 |
2 | 01/01/2015 | 13:00:00 |
1 | 01/01/2015 | 17:35:37 |
1 | 01/01/2015 | 18:01:35 |
2 | 01/01/2015 | 19:14:12 |
1 | 01/02/2015 | 14:21:42 |
2 | 01/02/2015 | 15:12:03 |
1 | 01/02/2015 | 15:42:20 |
Run Code Online (Sandbox Code Playgroud)
我需要以下格式的数据:
EmployeeId | Date | FirstTime | LastTime |
--------------------------------------------------
1 | 01/01/2015 | 14:01:35 | 18:01:35 |
2 | 01/01/2015 | 13:00:00 | 19:14:12 |
1 | 01/02/2015 | 14:21:42 | 15:42:20 |
2 | 01/02/2015 | 15:12:03 | 15:12:03 |
Run Code Online (Sandbox Code Playgroud)
FirstTime是Min(Time)那个date/employee,lasttime是max(time)为了那个date/employee.为了简化,我删除了自动增量PK.
我无法理解如何做到这一点.我在想Pivot可能是要走的路,但我不能用它来达到理想的效果.你可以帮我解决一下这个问题吗?
select employeeid, date, min(time) as firsttime, max(time) as lasttime
from tablename
group by employeeid, date
Run Code Online (Sandbox Code Playgroud)
您可以按employeeid进行分组,并选择给定日期的最短和最长时间.