나는이 쿼리를 작성하고 관리하여 dateDiff 함수로 하루에 작업 한 총 시간을 계산합니다. 이제 한 곳에서 멈추었습니다. 나는 사람이 시간이 지남에 따라 새로운 열이 hh : mm로 과도하게 표시되어야한다고 계산하고 싶습니다.초과 작업 시간을 계산할 새 열
본사의 총 근무 시간은 오전 8시이며, 8 시간 초과는 초과 근무 시간으로 간주됩니다. 사람이 8시 35분 시간을 일했다 경우 열은 사람이 근무하고 있음을 보여주는 것보다 0시 35분
QUERY :
출력with times as (
SELECT t1.EmplID
, t3.EmplName
, min(t1.RecTime) AS InTime
, max(t2.RecTime) AS [TimeOut]
, t1.RecDate AS [DateVisited]
FROM AtdRecord t1
INNER JOIN
AtdRecord t2
ON t1.EmplID = t2.EmplID
AND t1.RecDate = t2.RecDate
AND t1.RecTime < t2.RecTime
inner join
HrEmployee t3
ON t3.EmplID = t1.EmplID
group by
t1.EmplID
, t3.EmplName
, t1.RecDate
)
SELECT EmplID
,EmplName
,InTime
,[TimeOut]
,[DateVisited]
,CASE
WHEN minpart = 0
THEN CAST(hourpart AS NVARCHAR(200)) + ':00'
WHEN minpart <10
THEN CAST(hourpart AS NVARCHAR(200)) + ':0'+ CAST(minpart AS NVARCHAR(200))
ELSE CAST(hourpart AS NVARCHAR(200)) + ':' + CAST(minpart AS NVARCHAR(200))
END AS 'total time'
FROM (
SELECT EmplID
,EmplName
,InTime
,[TimeOut]
,[DateVisited]
,DATEDIFF(minute, InTime, [TimeOut])/60 AS hourpart
,DATEDIFF(minute, InTime, [TimeOut]) % 60 AS minpart
FROM times
) source
: 당신은 내가 할 수있는 너무 가까이있어
그냥 의사 코드 : 당신은 당신의'total_time' 및 빼기 걸릴 수 있습니다 그것으로부터 8 :'case when total_time - 8> 0 그 다음 total_time - 8 ELSE 0 end 초과 근무'' – seph