2
시간과 휴식 시간 예외가 발생하는 쿼리가 있습니다. 누군가 휴식을 취하지 않으면 중단 시간은 음수입니다. "BreakTime"을보고해야하지만, 음수 나누기 분을 '0'으로 변경해야하며 그렇지 않으면 휴식 분을보고해야합니다.집계에 대한 사례 문을 추가하는 방법
내 쿼리는 다음과 같습니다
SELECT lEmployeeID, sFirstName, sLastName,
TotalHours, BreakTime, SkippedBreak, ShortBreak
FROM (
SELECT lEmployeeID, sFirstName, sLastName,
SUM(TotalHours) AS TotalHours,
DATEDIFF(mi, MIN(dtTimeOut), MAX(dtTimeIn)) AS BreakTime,
CASE WHEN SUM(ftc.TotalHours) > 6
AND DATEDIFF(mi, MIN(ftc.dtTimeOut), MAX(ftc.dtTimeIn)) < 0
THEN 1
ELSE 0
END AS SkippedBreak,
CASE WHEN DATEDIFF(mi, MIN(ftc.dtTimeOut), MAX(ftc.dtTimeIn)) < 30
AND DATEDIFF(mi, MIN(ftc.dtTimeOut), MAX(ftc.dtTimeIn)) > 0
THEN 1
ELSE 0
END AS ShortBreak
FROM dbo.fTimeCard(@StartDate, @EndDate, @DeptList,
@iActive, @EmployeeList) AS ftc
WHERE (DID IS NOT NULL)
OR (DID IS NOT NULL)
AND (dtTimeOut IS NULL)
GROUP BY lEmployeeID, sFirstName, sLastName
) AS sub
WHERE (SkippedBreak = 1)
OR (ShortBreak = 1)
는 지금 내 출력은 다음과 같습니다
Bob Bibby 6.03 -362
Rob thomas 10.53 -632
Bret smith 7.6 17
Ron blah 8.1 25
은 내가 당신의 쿼리를 감싸
가능한 [Case 문에 집계 또는 신고 된 결과 만 표시하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/20721824/how-to-display-only-aggregate-or-flagged-results-in -a-case-statement) –
마지막 질문에 대한 내 발견에서 파생 된 질문입니다. 그것은 다른 질문입니다. 이제는 0보다 작 으면 "Breaktime"결과를 변경하려고합니다. – Shmewnix
찾고있는 쿼리에 대해 간단한 '입력'데이터와 해당 '출력'데이터 (결과)를 제공하면 훨씬 쉬울 것입니다. – gotqn