If the OP is on an earlier version SQL Server, this version should be good all the way back the SQL Server 2005. ;)
;WITH t AS (SELECT *, ROW_NUMBER() OVER (ORDER BY t.startTime) AS rn FROM @tbl AS t)
SELECT
t1.id,
t1.startTime,
t1.endTime,
COALESCE(DATEDIFF(hh,
CASE WHEN t1.startTime > t2.endTime THEN t1.startTime ELSE t2.endTime END,
CASE WHEN t1.endTime > t2.endTime THEN t1.endTime ELSE t2.endTime END
), DATEDIFF(hh, t1.startTime, t1.endTime)) AS Diff
FROM t AS t1
LEFT JOIN t AS t2
ON t1.rn = t2.rn +1
ORDER BY
t1.id
Jason Long
No comments:
Post a Comment