SQL COMBUSTIVEL

FILMAN 30/05/2012 00:14:29
#403125
Olá pessoal tudo bem com você?

Seguinte estou fazendo um controle de combustível para um cliente meu no entanto funcionando blz o problema esta no SQL que criei para emitir o relátório
de média do combustivel por placa do veículo

SQL
SELECT X.aba_hodometro, X.aba_litros, X.aba_preco, X.aba_posto, X.aba_total, X.Media, tbVeiculos.vei_placa, X.aba_data, X.Dif
FROM ((SELECT tbAbastecimento.*,(tbAbastecimento.aba_hodometro - Anterior.aba_hodometro) As Dif, ((tbAbastecimento.aba_hodometro - Anterior.aba_hodometro) / tbAbastecimento.aba_litros) AS Media, IIf(IsNull(tbAbastecimento.aba_id - Anterior.aba_id), 0, tbAbastecimento.aba_id - Anterior.aba_id) AS Diferenca FROM tbAbastecimento LEFT JOIN (SELECT * FROM tbAbastecimento) AS Anterior ON tbAbastecimento.aba_id > Anterior.aba_id) AS X INNER JOIN (SELECT tbAbastecimento.aba_id, MIN(IIf(IsNull(tbAbastecimento.aba_id - Anterior.aba_id), 0, tbAbastecimento.aba_id - Anterior.aba_id)) AS Diferenca FROM tbAbastecimento LEFT JOIN (SELECT * FROM tbAbastecimento) AS Anterior ON tbAbastecimento.aba_id > Anterior.aba_id GROUP BY tbAbastecimento.aba_id) AS Y ON (X.aba_id = Y.aba_id) AND (X.Diferenca = Y.Diferenca)) INNER JOIN tbVeiculos ON X.vei_id = tbVeiculos.vei_id ORDER BY tbVeiculos.vei_placa, X.aba_data;


Esse SELECT faz o seguinte ele captura as informações que tem lançada na tabela e procura o valor anterior daquele lançamento, só que?!?!?!?!?!
ao passar para qualquer placa que não seja a primeira o calculo sempre capturar o ultimo hodômetro da placa anterior sendo que a primeira de qualquer veículo vai ser 0(zero a diferenca)


como posso resolver isso

MARCELO.TREZE 30/05/2012 09:13:26
#403135
FILMAN descreve um exemplo do que a query deve fazer
FILMAN 30/05/2012 19:30:37
#403177
OK Marcelo, Seguinte

Essa Query esta fazendo o seguinte:
Percorrendo todas as linhas da tabela ordenado por DATA e PLACA do veículo
ao percorrer uma linha ela verifica se existe uma linha anterior a atual linha se existe faz a diferença do hodometro Atual menos o Anterior dividido pelo o litro bastecido atual
desse jeito eu faço a média de KM / Litro.

Só que tudo esta funcionando beleza mais com apenas um detalhe ao mudar de PLACA a primeira DATA da placa sempre tem que ser a diferença de hodometro e média
zerados só que não é isso que esta acontecendo

Ao mudar de placa a mesma captura o ultimo hodometro da placa anterior é esse o verdadeiro problema ou seja somente a primeira sai correta as proximas sempre captura
o ultimo hodometro anterior


Segue anexo a tabela com a consulta

Abra a consulta e verifique o que estou tentando mostrar
FILMAN 31/05/2012 14:38:35
#403262
Existe outra maneira de fazer isso?


Estou aberto a sugestões


Obrigado
MARCELO.TREZE 31/05/2012 14:41:44
#403263
Filmam desculpe não ajudar mas fiquei tontinho com a query, e como não companho o seu projeto não consigo ver o que pode ser modificado
FILMAN 31/05/2012 17:21:39
#403296
Desculpe pessoal mais enviei o arquivo errado

Segue o banco com a consulta onde esta a query



Caso tenham alguma ideia melhor de como fazer isso estou On-Line


Abraços Valeu
FILMAN 01/06/2012 07:56:58
#403321
Galera muito obrigado mais consegui resolver

A solução foi tratar a identificação da placa
Tópico encerrado , respostas não são mais permitidas