Ir para conteúdo
Fórum Script Brasil
  • 0

Intervalo de datas entre dois registros diferentes


Marcelo Vidal

Pergunta

Oi Pessoal,

Minha dúvida é a seguinte, tenho uma tabelas com as seguintes informações:

id_dados         nr_maquina      dt_dados_inicio                    dt_dados_fim

998                 1                     10/03/2018 15:00:05          10/03/2018 15:00:35

999                 2                     10/03/2018 15:00:15          10/03/2018 15:00:40

1000               1                     10/03/2018 15:00:35          10/03/2018 15:01:05

1001               2                     10/03/2018 15:00:40          10/03/2018 15:01:00

1000               1                     10/03/2018 15:01:05          10/03/2018 15:01:35

1001               1                     10/03/2018 15:10:35          10/03/2018 15:11:05

1001               2                     10/03/2018 15:10:40          10/03/2018 15:11:10

 

Eu preciso de uma query onde possa receber o seguinte resultado:

nr_maquina      dt_inicio_parada                       dt_fim_parada

1                     10/03/2018 15:00:35              10/03/2018 15:10:35

2                     10/03/2018 15:01:00              10/03/2018 15:10:40

 

Ou seja, preciso que me traga o número da máquina com o intervalo não sequencial de dt_fim e dt_inicio do próximo registro.

Tenho uma query bem longa mas que além de muito lenta não trás corretamente as informações, e por esse motivo preciso de alguma coisa melhor. A query que tenho é esta abaixo:

SELECT        v1.nr_maquina as nr_maquina
                  , v1.dt_dados_fim as dt_inicio_parada
                  , tk.dt_dados_inicio as dt_fim_parada
FROM            (SELECT        id_dados, dt_dados_inicio, dt_dados_fim, nr_maquina
                          FROM            dbo.TB_DADOS AS t1
                          WHERE        EXISTS
                                                        (SELECT        1 AS Expr1
                                                          FROM            dbo.TB_DADOS AS t2
                                                          WHERE        (id_dados =
                                                                                        (SELECT        MIN(id_dados) AS Expr1
                                                                                          FROM            dbo.TB_DADOS AS t3
                                                                                          WHERE        (id_dados > t1.id_dados) AND (nr_maquina = t1.nr_maquina))) AND (dt_dados_inicio > t1.dt_dados_fim) AND (nr_maquina = t1.nr_maquina))) AS v1 CROSS JOIN
                         dbo.TB_DADOS AS tk
WHERE        (tk.id_dados =
                             (SELECT        MIN(id_dados) AS Expr1
                               FROM            dbo.TB_DADOS AS tk3
                               WHERE        (id_dados > v1.id_dados) AND (nr_maquina = v1.nr_maquina)))

 

 

Se alguém tiver passado por isso e tiver alguma idéia de uma forma melhor de resolver esse problema, agradeço.

 

Abraço.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...