DECLARE @t TABLE (orderNO VARCHAR(20),status VARCHAR(20), insert_date DATETIME)
INSERT INTO @t VALUES
(' OBJV107522 ',' ENTERED ',' 2/4/2019 11:44:45.800 AM '),
(' OBJV107522 ',' ENTERED ',' 2/4/2019 11:45:14.410 AM '),
(' OBJV107522 ',' ENTERED ',' 2/4/2019 11:45:14.597 AM '),
(' OBJV107522 ',' ENTERED ',' 2/4/2019 11:45:14.833 AM '),
(' OBJV107522 ',' OPEN ',' 2/4/2019 12:27:15.710 PM '),
(' OBJV107522 ',' ENTERED ',' 2/4/2019 12:36:39.327 PM '),
(' OBJV107522 ',' ENTERED ',' 2/4/2019 12:36:39.920 PM '),
(' OBJV107522 ',' OPEN ',' 2/4/2019 2:34:58.957 PM '),
(' OBJV107522 ',' ENTERED ',' 2/4/2019 2:35:07.817 PM '),
(' OBJV107522 ',' OPEN ',' 2/4/2019 3:50:04.393 PM ');
SELECT t2.orderNO, t2.status, t2.insert_date
, minutes_elapsed = MAX(DATEDIFF(SECOND, t.insert_date, t2.insert_date)/60)
FROM @t as t
CROSS APPLY (
SELECT insert_date = MIN(t1.insert_date)
FROM @t as t1
WHERE t1.status != t.status
and t1.insert_date > t.insert_date
) as tm
INNER JOIN @t as t2 ON t2.insert_date = tm.insert_date
GROUP BY t2.orderNO, t2.status, t2.insert_date
ORDER BY t2.insert_date