辦公時間:上午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
刪除了大寫字母和粗體字體,因爲沒有增加問題的清晰度,通常被認爲是大喊大叫/壞的網絡禮儀。 –