2
我有一个查询获取时间时钟和中断时间异常。如果有人不休息,休息时间是一个负数。我需要报告“BreakTime”,但是我需要将负面休息分钟更改为“0”,否则报告休息分钟。如何为总计添加Case语句
我的查询是:
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
我需要负课间分钟为 “0”
可能重复的[如何在Case语句中仅显示聚合或标记结果](http://stackoverflow.com/questions/20721824/how-to-display-only-aggregate-or-flagged-results-in - 个案声明) –
这是一个来自我对最后一个问题的调查结果的问题。这是一个不同的问题。我现在试图改变“Breaktime”的结果,如果它小于0 – Shmewnix
如果你为你正在查询的查询提供了一个简单的'input'数据和相应的'output'数据(结果),那将会容易得多。 – gotqn