Pular para o conteúdo
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #91048
    Sorokabano
    Participante

      Pessoal , estou com a seguinte duvida.

      Tenho 2 tabelas (AGENDA) onde tem os campos cod_veiculo e data/hora_prevista e a tabela (MARCAÇÃO) onde tem os campos cod_veiculo e data/hora marcada.

      O que eu preciso, na tabela agenda tem a identificação do veiculo e a hora que é pra ele passar em determinado ponto. E na tabela marcação tem a identificação do veiculo e a hora que ele passou por esse ponto.

      Porem como o veiculo vai passar varias vezes ao dia pelo mesmo ponto preciso saber como ligar o horario que ele passou com o horario que estava previsto, para poder calcular o atraso ou adiantamento do mesmo. EX:

      (AGENDA)

      0001 12/12/2009-12:35
      0001 12/12/2009-12:55
      0001 12/12/2009-13:40

      (MARCAÇÃO)

      0001 12/12/2009-12:40

      Vendo isso, pegarei a marcação e verei qual data/hora esta mais proxima na tabela AGENDA (tanto pra mais quanto pra menos) que no caso é a de 12/12/2009-12:35

      Vou pegar a hora(marcação) subutrair hora(agenda) e retornar o tempo que o carro esta atarasado ou adiantado, que no caso é 5 min atrasado

      Então , minha duvida é, como selecionar a hora mais proxima.

      Obrigado

      #91050
      burga
      Participante

        Oi Sorokabano, tenta isso:

        select data_marcada
        from (select m.data_marcada, case when
        a.data_prevista < m.data_marcada then
        m.data_marcada - a.data_prevista
        else
        a.data_prevista - m.data_marcada
        end intervalo
        from agenda a join marcacao m
        on a.cod_veiculo = m.cod_veiculo
        and a.cod_veiculo = [CODIGO_VEICULO]
        order by 2)
        where rownum = 1;

        Só substitui o [CODIGO_VEICULO] pelo código verdadeiro e acerta os nomes dos campos e tabelas.

      Visualizando 2 posts - 1 até 2 (de 2 do total)
      • Você deve fazer login para responder a este tópico.