Usuário com melhor resposta
Busca de uma tabela em outra

Pergunta
-
Boa tarde,
Tenho uma tabela chamada #Intervalos com datas de Inicio e Fim de um determinado evento do meu processo:
Inicio
Fim
2018-02-22 11:00:00.000
2018-02-22 12:00:00.000
2018-02-22 15:00:00.000
2018-02-22 16:00:00.000
2018-02-22 20:00:00.000
2018-02-22 23:00:00.000
E Tenho uma segunda tabela chamada #Interrupcoes
Interrupções
2018-02-22 11:20:00.000
2018-02-22 20:01:00.000
2018-02-22 20:30:00.000
Preciso de um Select que me retorne uma terceira tabela (#Intervalos_chancelados), no mesmo formato da tabela #Intervalos só que criando um novo intervalo a cada interrupção que ocorrer depois de 5 minutos de um Inicio.
No exemplo acima a tabela #Intervalos_chancelados seria assim:
Inicio
Fim
2018-02-22 11:00:00.000
2018-02-22 11:20:00.000
2018-02-22 11:20:00.000
2018-02-22 12:00:00.000
2018-02-22 15:00:00.000
2018-02-22 16:00:00.000
2018-02-22 20:00:00.000
2018-02-22 20:30:00.000
2018-02-22 20:30:00.000
2018-02-22 23:00:00.000
Ou seja, o intervalo entre 11 e 12h se transforma em 2 pois teve uma interrupção, o intervalo entre 15 e 16h se mantém inalterado, a interrupção das 20:01hrs é ignorado pois aconteceu a menos de 5 minutos do início de um intervalo, já a interrupção das 20:30 divide o intervalo original das 20 as 23h.
Se alguém tiver alguma ideia, por favor me ajude.
Respostas
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 23 de fevereiro de 2018 12:44
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 26 de fevereiro de 2018 13:19
-
Deleted
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 26 de fevereiro de 2018 13:19
Todas as Respostas
-
Boa tarde,
Experimente mais ou menos dessa forma:
select i.Inicio, coalesce ((select top(1) r.Interrupcao from Interrupcoes as r where r.Interrupcao between dateadd(minute, 5, i.Inicio) and i.Fim), i.Fim) as Fim from Intervalos as i union all select r.Interrupcao, i.Fim from Interrupcoes as r inner join Intervalos as i on r.Interrupcao between dateadd(minute, 5, i.Inicio) and i.Fim order by Inicio
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 23 de fevereiro de 2018 12:43
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP sexta-feira, 23 de fevereiro de 2018 12:44
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 26 de fevereiro de 2018 13:19
-
Deleted
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 26 de fevereiro de 2018 13:19
-
-
Bom dia, muito obrigado pela ajuda!
Sobre as dúvidas:
1 - Não acontecem interrupções com menos de 5 minutos entre elas por característica do processo, o que acontece é que um início de evento as vezes aparece como interrupção erroneamente, por isso a restrição de 5 minutos de diferença.
2 - No momento estou fazendo relatórios diários com 5 ou 6 eventos por dia, mas provavelmente vou precisar aumentar isso para relatórios anuais em algum momento.
Novamente agradeço muito!