SELECT EmployeeID, minutes_worked = SUM(DATEDIFF(MINUTE, '0:00:00', WrkHrs))
FROM dbo.table
-- WHERE ...
GROUP BY EmployeeID;
フロントエンドできれいにフォーマットできます。または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;
ただし、間違ったデータ型を使用しています。 TIME
間隔や期間ではなく、特定の時点を示すために使用されます。勤務時間を2つの異なる列StartTime
に保存するのは理にかなっていますか? およびEndTime
?