SELECT EmployeeID, minutes_worked = SUM(DATEDIFF(MINUTE, '0:00:00', WrkHrs))
FROM dbo.table
-- WHERE ...
GROUP BY EmployeeID;
Vous pouvez le formater joliment sur le front-end. Ou en T-SQL :
;WITH w(e, mw) AS
(
SELECT EmployeeID, SUM(DATEDIFF(MINUTE, '0:00:00', WrkHrs))
FROM dbo.table
-- WHERE ...
GROUP BY EmployeeID
)
SELECT EmployeeID = e,
WrkHrs = RTRIM(mw/60) + ':' + RIGHT('0' + RTRIM(mw%60),2)
FROM w;
Cependant, vous utilisez le mauvais type de données. TIME
est utilisé pour indiquer un point dans le temps, pas un intervalle ou une durée. Ne serait-il pas logique de stocker leurs heures de travail dans deux colonnes distinctes, StartTime
et EndTime
?