나는 끌어 오기가 정보에서 직원 펀치를 잡아내는 함수를 실행하는 쿼리가 있습니다. 그것은 특정 일을 위해 그들을 결합, 시간 세그먼트를 끌어, 그들은 확인하기 위해 검사를 실행 30 분 미만중단 시간에 차이를 찾기위한 Datediff
다음은 휴식을했다 그 날 2) 휴식을 취하지 않았다
1) 이 부분의 첫 부분은 올바르게 작동합니다. 휴식을 취하지 않은 주 7 명 (모두 0 분 휴식)을 표시합니다. 그러나 단 22 분만 휴식 한 사용자는 표시되지 않습니다. 무슨 일이 일어나고 있는지, 특정 날짜의 모든 시간 정보를 완전히 결합하지 못하고 있다고 생각합니다. 휴식을 취하지 않은 사람들을위한 정보 만 결합합니다. 어떤 도움이 필요합니까?
내 쿼리는 다음과 같습니다
SELECT lEmployeeID, NUM_Hours, CASE WHEN tmp.Break_Time_Minutes < 0 THEN 0 ELSE Break_Time_Minutes END AS Break_Time_Minutes,
CASE WHEN tmp.Break_Time_Minutes < 0 THEN 1 ELSE 0 END AS SkippedBreak, sFirstName, sLastName, TotalHours
FROM (SELECT employee.lEmployeeID, employee.sFirstName, employee.sLastName, employee.TotalHours, ROUND(SUM(DATEDIFF(second, employee.dtTimeIn,
employee.dtTimeOut)/60.0/60.0), 1) AS NUM_Hours, DATEDIFF(mi, MIN(employee.dtTimeOut), MAX(employee.dtTimeIn)) AS Break_Time_Minutes
FROM dbo.fTimeCard(@StartDate, @EndDate, @DeptList, @iActive, @EmployeeList) AS employee LEFT OUTER JOIN
Employees AS e ON employee.lEmployeeID = e.lEmployeeID
WHERE (employee.TotalHours >= 0) AND (employee.DID IS NOT NULL) OR
(employee.DID IS NOT NULL) AND (employee.dtTimeOut IS NULL)
GROUP BY employee.lEmployeeID, employee.sLastName, employee.sFirstName, employee.TotalHours, CAST(employee.dtTimeIn AS Datetime)) AS tmp
WHERE (NUM_Hours > 6) AND (Break_Time_Minutes < 30)
쿼리 내가 당신의 대한 기존 쿼리 (마지막 게시물)의에 제안 마지막 게시물을 complicated.in 않은이 켜지지입니다 datediff를 사용하여 동일한 쿼리에서 하나 이상의 열을 만들고 .do same now.no는 group by 또는 sum을 필요로하지 않습니다. – KumarHarsh
나는 세그먼트를 결합해야합니다 ... 나는 단지 하나를 취하지 않은 사람들을 포함하여 30 분 미만의 휴식을 취한 사람들을보고하고자합니다. 또한 적절한 휴식을 취하지 않고 작업 한 총 시간을보고해야합니다. – Shmewnix
먼저 동일한 쿼리에서 동일한 쿼리에서 하나의 열을 더 만든 다음이 GROUP BY employee.lEmployeeID only.thatswhy를 사용하여 작업 및 합계 작업을 결합해야합니다. 단순한 마지막 글 목록을 보여주십시오. – KumarHarsh