Select para consultar status início e fim

Olá pessoal estou precisando gerar um relatório onde me informa o início e fim do evento.

Status                    Inicio           Fim             Tempo       Distância
LIGADA       31/03/2016 06:51:48   31/03/2016 07:02:13   0h:10m:25s      0 M
DESLIGADA    31/03/2016 07:02:13   31/03/2016 16:12:03   9h:9m:50s
LIGADA       31/03/2016 16:12:03   31/03/2016 16:22:00   0h:9m:57s      5,021 KM

O início da consulta tranquila para montar.
O complicado está em gerar a o resultado acima

Você vai precisar selecionar tudo e filtrar as mudanças de evento (status). Todos os cálculos acabarão sendo realizados pelo java mesmo.

Eu tenho feito em PHP que é a que uso nesse caso, mas quero levar para o SQL mesmo, tenho um outro exemplo feito mas usa LOOP no banco e isso é horrível e inviável.

Ah, sim. Só troque o java por PHP no que eu disse acima.
Eu trabalhei por 4 anos com telemetria e tinha várias coisas assim, tando em java quanto em PHP.
Não tem jeito, ou é isso ou é loop no BD, dentro de functions ou stored procedures, que, convenhamos, é uma porcaria mesmo.

Obrigado, pela ajuda então vou deixar para tratar na linguagem mesmo.