我有一张包含以下示例的表格
EmployeeID | Employee | PunchDate
---------------------------------------
11 | Sujith | 22/12/2016 08:16:00
11 | Sujith | 22/12/2016 13:35:00
11 | Sujith | 22/12/2016 17:23:00
11 | Sujith | 22/12/2016 21:09:00
12 | Tony | 22/12/2016 14:06:00
12 | Tony | 22/12/2016 22:39:00
13 | Jimmy | 22/12/2016 08:00:00
13 | Jimmy | 22/12/2016 17:12:00
14 | Nitha | 22/12/2016 18:50:00
14 | Nitha | 23/12/2016 07:05:00
我想为以下结果构建一个查询:
EmployeeID|Name |DutyTimeIn |DutyTimeOut |WorkingHours
----------------------------------------------------------------------------
11 |Sujith |22/12/2016 08:16:00 |22/12/2016 13:35:00 |05:19
11 |Sujith |22/12/2016 17:23:00 |22/12/2016 21:09:00 |03:46
12 |Tony |22/12/2016 14:06:00 |22/12/2016 22:39:00 |08:33
13 |Jimmy |22/12/2016 08:00:00 |22/12/2016 17:12:00 |09:12
14 |Nitha |22/12/2016 18:50:00 |23/12/2016 07:05:00 |12:15
答案 0 :(得分:0)
;with cte as
(
select *,((row_number()over(partition by [ID] order by [DATE]) - 1 )/2) as rn from #d
)
select id,name,min([DATE])[DATE],max([DATE])[NXTDATE],
CAST(DateDiff(MI, min([DATE]), max([DATE]))/60 AS varchar)+':'+Cast(DateDiff(MI, min([DATE]), max([DATE]))%60 AS varchar)+':'+cast(DateDiff(s, min([DATE]), max([DATE]))%60 AS varchar) as [hh:mm:ss]
from cte
group by id,name,rn
output
id name DATE NXTDATE hh:mm:ss
11 Sujith 2016-12-22 08:16:00.000 2016-12-22 13:35:00.000 5:19:0
11 Sujith 2016-12-22 17:23:00.000 2016-12-22 21:09:00.000 3:46:0
12 Tony 2016-12-22 14:06:00.000 2016-12-22 22:39:00.000 8:33:0
13 Jimmy 2016-12-22 08:00:00.000 2016-12-22 17:12:00.000 9:12:0
14 Nitha 2016-12-22 18:50:00.000 2016-12-23 07:05:00.000 12:15:0