2017-09-06 35 views
0

我想做一個報告,計算夜班員工的休息時間。但有一個問題。假設夜班時間是從晚上9點到第二天早上6點。根據該計劃出席細節如下,如果員工不休息一下這是很容易計算checkout1和checkout2的工作差的持續時間夜班員工休息時間創建多個記錄

emp_num checkin1     checkout1     
81111  2014-08-21 21:38:06.000 2014-08-22 06:00:10.000  

當他在移位一個需要休息的2AM新記錄被創建。由於有多個記錄,我不能夠計算工作時間。請幫助

emp_num checkin1     checkout1     
81111  2014-08-21 21:38:06.000 2014-08-22 02:00:10.000   
81111  2014-08-22 02:30:00.000 2014-08-22 06:00:10.000 
+0

從開始時間減去幾個小時,以獲得從同一日期和組開始的兩行。使用標準SQL:'cast(checkin - interval'6'hours as date)' – dnoeth

+0

我正在尋找一個水晶報表解決方案,其中僱員的小時(first_in)> = 21(9PM)時間應該是第一條記錄的簽入差異並結算第二筆記錄。類似的休息時間差應該是第一筆記錄的簽出和第二筆簽到 – Rameel

回答

0

我創建了一個臨時表,並上傳您的數據。

create table #employee (EmpID int, CheckIn Datetime, CheckOut Datetime, HoursWorked time) 

然後我插入數據如下所示。

EmpID CheckIn     CheckOut 
1  2014-08-21 21:38:06.000 2014-08-22 06:00:10.000  
2  2014-08-21 21:38:06.000 2014-08-22 02:00:10.000   
2  2014-08-22 02:30:00.000 2014-08-22 06:00:10.000 

我更新HoursWorked列

update #employee set HoursWorked = CheckOut - CheckIn 

選擇下面的語句給所需的輸出。

SELECT EmpID,SUM(DATEPART(HOUR,hoursworked))AS HoursWorked, 
      SUM(DATEPART(MINUTE,hoursworked))AS MinutesWorked, 
      SUM(DATEPART(SECOND,hoursworked))AS SecondsWorked FROM #employee 
GROUP BY EmpID 

EmpID HoursWorked MinutesWorked SecondsWorked 
1  8   22    4 
2  7   52    14 

讓我知道是否有任何錯誤或捷徑。從9點開始減少工作時間會給你休息時間。

+0

Madhukar ...我將如何計算從凌晨2點到凌晨2:30的休息時間? – Rameel