办公时间:上午10:00至下午18:00。加班专栏
我已经写了这个查询来显示加班,如果有人工作超过8小时,例如,如果他工作'08:44小时'比加班节目00:44,但现在我不想要这个。
我不想根据TOTAL WORK TIME
来计算它。我希望如果人员的工作时间超过时间18:00,那么应该显示加班时间。
例如如果人员从上午10点50分到下午18点33分加班,则应该显示00:33。只有当一个人在18点以上工作,那么加班应该被计算在内。
n.b.其实,我们的办公室政策是向员工支付加班费用,所以他们计算的加班时间仅高于18:00时钟时间,即使人员在下午17:00到达办公室并且工作到18时54分,即使他会加班时间为54分钟,除此之外,他没有工作的时间会导致工资减免,但仍然适用于加班津贴。
WITH Times AS
( SELECT emp.EmplID,
emp.EmplName,
InTime = MIN(atd.RecTime),
OutTime = MAX(atd.RecTime),
TimeWorked = DATEDIFF(MINUTE, MIN(atd.RecTime), MAX(atd.RecTime)),
OverTime = DATEDIFF(MINUTE, MIN(atd.RecTime), MAX(atd.RecTime)) - 480,
[DateVisited] = atd.RecDate
FROM AtdRecord atd
INNER JOIN HrEmployee emp
ON atd.EmplID = emp.EmplID
GROUP BY emp.EmplID, emp.EmplName, atd.RecDate
HAVING COUNT(atd.RecTime) > 1
)
SELECT t.EmplID,
t.EmplName,
t.InTime,
t.OutTime,
t.DateVisited,
TimeWorked = CONVERT(CHAR(5), DATEADD(MINUTE, t.TimeWorked, 0), 8),
OverTime = CASE WHEN t.OverTime < 0 THEN '-' ELSE '' END +
CONVERT(CHAR(5), DATEADD(MINUTE, ABS(t.OverTime), 0), 8)
FROM Times t
删除了大写字母和粗体字体,因为没有增加问题的清晰度,通常被认为是大喊大叫/坏的网络礼仪。 –