请试试这个:
DECLARE @ClientDuration TABLE (clientId INT NOT NULL, StartDate DATETIME, EndDate DATETIME)
INSERT INTO @ClientDuration VALUES (1, '2017-10-13 09:21:53', '2017-10-13 10:22:53')
INSERT INTO @ClientDuration VALUES (1, '2017-10-14 09:21:53', '2017-10-14 10:22:53')
INSERT INTO @ClientDuration VALUES (1, '2017-10-15 09:21:53', '2017-10-15 10:22:53')
INSERT INTO @ClientDuration VALUES (2, '2017-10-13 08:21:53', '2017-10-13 10:22:53')
INSERT INTO @ClientDuration VALUES (2, '2017-10-14 09:21:53', '2017-10-16 10:22:53')
INSERT INTO @ClientDuration VALUES (2, '2017-10-15 10:21:53', '2017-10-15 10:22:53')
;WITH cte AS (
SELECT
clientId,
CAST((SUM(DATEDIFF(minute, startdate, enddate)) % 60) AS VARCHAR(3)) AS mins,
CAST((SUM(DATEDIFF(minute, startdate, enddate)) - (SUM(DATEDIFF(minute, startdate, enddate)) % 60))/60 AS VARCHAR(3)) AS hrs
FROM @ClientDuration
GROUP BY clientId
)
SELECT clientId,
IIF(LEN(c.hrs) = 1, '0' + c.hrs, c.hrs) + ' H :' + IIF(LEN(c.hrs) = 1, '0' + c.hrs, c.hrs) + ' M' AS TotalDuration
来自 cte AS c
输出:
clientId TotalDuration
1 03 H :03 M
2 51 H :51 M