Вы можете думать об этом как о пробелах и проблеме островов, где смежные часы представляют остров. Вам нужно найти все острова и найти минимальную дату для каждого острова:
DECLARE @T TABLE (userid INT, workdate DATE, workhour INT);
INSERT INTO @t VALUES
(1, '2018-11-13', 20),
(1, '2018-11-13', 21),
(1, '2018-11-13', 22),
(1, '2018-11-13', 23),
(1, '2018-11-14', 0),
(1, '2018-11-14', 1),
(1, '2018-11-14', 2),
(1, '2018-11-14', 3),
(1, '2018-11-14', 4),
(1, '2018-11-14', 5),
(1, '2018-11-20', 6);
WITH cte1 AS (
SELECT userid, workdate, workhour
, DATEADD(HOUR, workhour, CAST(workdate AS DATETIME)) AS workdatetime
FROM @t
), cte2 AS (
SELECT userid, workdate, workhour
, CASE WHEN DATEDIFF(HOUR, LAG(workdatetime) OVER (PARTITION BY userid ORDER BY workdate, workhour), workdatetime) = 1 THEN 0 ELSE 1 END AS chg
FROM cte1
), cte3 AS (
SELECT userid, workdate, workhour
, SUM(chg) OVER (PARTITION BY userid ORDER BY workdate, workhour) AS grp
FROM cte2
)
SELECT userid, workdate, workhour, MIN(workdate) OVER (PARTITION BY userid, grp) AS ReportingDate
FROM cte3
ORDER BY userid, workdate, workhour