add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
WITH yourTable AS (
SELECT '2020-02-03 18:35' AS DateTime, 'Start' AS MotorStatus UNION ALL
SELECT '2020-02-03 18:35', 'Start' UNION ALL
SELECT '2020-02-03 18:36', 'Start' UNION ALL
SELECT '2020-02-03 18:35', 'Start' UNION ALL
SELECT '2020-02-03 18:36', 'Start' UNION ALL
SELECT '2020-02-03 18:36', 'Start' UNION ALL
SELECT '2020-02-03 18:36', 'Stop' UNION ALL
SELECT '2020-02-03 18:36', 'Stop' UNION ALL
SELECT '2020-02-03 18:36', 'Stop' UNION ALL
SELECT '2020-02-03 18:36', 'Standby' UNION ALL
SELECT '2020-02-03 18:37', 'Standby' UNION ALL
SELECT '2020-02-03 18:37', 'Start'
),
cte AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY DateTime) rn1,
ROW_NUMBER() OVER (PARTITION BY MotorStatus ORDER BY DateTime) rn2
FROM yourTable
)

SELECT MIN(DateTime) AS start, MAX(DateTime) AS `end`
FROM cte
WHERE MotorStatus = 'Start'
GROUP BY rn1 - rn2
ORDER BY start;






start end
2020-02-03 18:35 2020-02-03 18:36
2020-02-03 18:37 2020-02-03 18:37