|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
rastrack Novato
Registrado: Segunda-Feira, 27 de Julho de 2015 Mensagens: 70
|
Enviada: Dom Out 23, 2016 9:46 pm Assunto: SQL Server Consulta. |
|
|
Pessoal, tenho aqui um sistema de rastreamento e bloqueio de veículos, preciso listar os veículos que estejam sem atualizar há 1 hora ou mais. Tenho as tabelas veiculos, modulos, atualizacoes;
Na tabela atualizações eu tenho os campos datahora(datetime) e idmodulo, na tabela veiculos eu também tenho idmodulo, faço os joins e consigo saber a que veículo está vinculado módulo(rastreador) referente à tal registro de atualização. Abaixo essa view que mostra um pouco da estrutura das tabelas pra ver se ajuda;
Código: | SELECT A.ID, C.IDCLIENTE, A.TIPOMSG, A.STATUSPOSICAO, A.STATUSGPS, CONVERT(SMALLDATETIME, A.DATAHORA, 108) AS DATAHORA, CONVERT(VARCHAR, A.DATAHORA,
103) + ' ' + CONVERT(VARCHAR(8), A.DATAHORA, 108) AS DATAHORAEXIB, A.DATAHORA AS DATAHORAORIGINAL, A.LATITUDE, A.LONGITUDE, A.NUMSATELITES,
A.VELOCIDADE, B.ID AS IDMODULO, B.SERIEMODULO, B.TIPO AS TIPORASTREADOR, A.IGNICAO, A.ANTIFURTO, A.BLOQUEADO, A.SAIDAS1, A.SAIDAS2, A.SAIDAS3,
A.SAIDAS4, A.ENTRADAS1, A.ENTRADAS2, A.ENTRADAS3, A.ENTRADAS4, A.ALTITUDE, C.PLACA, C.ID AS IDVEICULO, C.IDTIPOVEICULO AS TIPOVEICULO,
D.DESCRICAO AS TIPOVEICULODESCRICAO, C.IDENTIFICACAO AS IDENTIFICACAOVEICULO, A.DIRECAO, A.MODELO, A.PANICO, A.VELOCIDADEMAXIMAEXCEDIDA,
A.BATERIACARREGANDO, A.FALHABATERIAINTERNA, A.FALHAALIMENTACAOPRINCIPAL, A.MOVENDO, A.TENSAO, A.HODOMETRO, A.IDMOTORISTA,
E.NOME AS MOTORISTA, C.ENTRADA1LABEL, C.ENTRADA2LABEL, C.ENTRADA3LABEL, C.ENTRADA4LABEL, C.SAIDA1LABEL, C.SAIDA2LABEL, C.SAIDA3LABEL,
C.SAIDA4LABEL, C.ENTRADA1VALON, C.ENTRADA2VALON, C.ENTRADA3VALON, C.ENTRADA4VALON, C.SAIDA1VALON, C.SAIDA2VALON, C.SAIDA3VALON,
C.SAIDA4VALON, C.SAIDA1VALOFF, C.SAIDA2VALOFF, C.SAIDA3VALOFF, C.SAIDA4VALOFF, C.ENTRADA1VALOFF, C.ENTRADA2VALOFF, C.ENTRADA3VALOFF,
C.ENTRADA4VALOFF, C.ENTRADA1SHOW, C.ENTRADA2SHOW, C.ENTRADA3SHOW, C.ENTRADA4SHOW, C.SAIDA1SHOW, C.SAIDA2SHOW, C.SAIDA3SHOW,
C.SAIDA4SHOW, dbo.CONVERTEMINUTOSHORAS(A.HORIMETRO) AS HORIMETROFORMATADO, A.HORIMETRO, A.INDICEPOSICAOMXT, A.NIVELSINALGSM
FROM dbo.ATUALIZACOES AS A INNER JOIN
dbo.MODULOS AS B ON B.ID = A.IDMODULO INNER JOIN
dbo.VEICULOS AS C ON B.ID = C.IDMODULO INNER JOIN
dbo.TIPOSVEICULO AS D ON D.ID = C.IDTIPOVEICULO LEFT OUTER JOIN
dbo.MOTORISTAS AS E ON E.ID = A.IDMOTORISTA
WHERE (A.STATUSGPS <> 'M') |
Preciso montar uma consulta pra listar as placas dos veículos + datahora que estão há 1 hora ou mais sem atualizar.
Alguém sabe por onde eu começo? |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Out 26, 2016 1:04 pm Assunto: |
|
|
Boa tarde,
Experimente mais ou menos dessa forma:
Código: | select
v.IDCLIENTE,
v.PLACA,
v.ID AS IDVEICULO,
v.IDTIPOVEICULO AS TIPOVEICULO,
max(a.DataHora) as DataHora
from Veiculos as v
inner join Atualizacoes as a
on a.IdModulo = v.IdModulo
group by
v.IDCLIENTE,
v.PLACA,
v.ID,
v.IDTIPOVEICULO
having
max(a.DataHora) <= DATEADD(HOUR, 1, CURRENT_TIMESTAMP) |
Espero que ajude |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|