Estou a fazer uma aplicação em access onde terei de fazer a media de combustível da viatura.
O meu problema é ter varias matriculas na mesma tabela onde me está a criar dificuldades na resolução do mesmo.
Já consegui fazer grande parte da consulta onde
Exemplos..
T_Consumo
id___Matricula___KMActual___litros___Media
1___xx-xx-xx_____0________20______--
2___xx-xx-xx_____450______30______6.7
3___xx-xx-xx_____777______28______8.6
e ate aqui tudo bem!
O problema vem quando passo de matricula por causa do ID
T_Consumo
id___Matricula___KMActual___litros___Media
3___yy-yy-yy______0________20______-2 (Não é este o valor certo mas deveria aparecer em branco tal como no ID=1
4___yy-yy-yy______554______15______2,7 (Quando insiru registos da matricula xx e depois da yy e depois da hh vai ficar tudo trocado tal como neste valor)
5___yy-yy-yy______777______28______12,6
Está é a minha istrução SQL
SELECT X.Matricula AS Matrícula, X.Km AS [Km Actual], X.Litros AS [Qtd Litros], X.Media AS Média, X.valorlitro AS [Preço por Litro], X.valortotal AS [Preço Total]
FROM (SELECT t_Consumo.matricula, t_consumo.valorlitro, t_Consumo.id, t_Consumo.Km, t_Consumo.Litros, (t_Consumo.Litros*t_Consumo.valorlitro) AS valortotal, t_consumo.matricula as codigo, (t_Consumo.Litros*100/(t_Consumo.Km-Anterior.Km)) AS Media, IIf(IsNull(t_Consumo.id-Anterior.id),0,t_Consumo.id-Anterior.id) AS Diferenca FROM t_Consumo LEFT JOIN (SELECT * FROM t_Consumo) AS Anterior ON t_Consumo.id>Anterior.id) AS X INNER JOIN (SELECT t_Consumo.id, Min(IIf(IsNull(t_Consumo.id-Anterior.id),0,t_Consumo.id-Anterior.id)) AS Diferenca FROM t_Consumo LEFT JOIN (SELECT * FROM t_Consumo) AS Anterior ON t_Consumo.id>Anterior.id GROUP BY t_Consumo.id) AS Y ON (X.Diferenca = Y.Diferenca) AND (X.id = Y.id)
WHERE (((X.matricula)=[forms]![F_Viatura]![matricula]));
Testei com RowNumber mas o resoltado não saiu bem o pretendido pois a unica coisa que fez foi contar todos os registos e não os da matricula xx-xx-xx pretendida.
SELECT (SELECT Count(matricula) + 1 FROM T_Consumo AS A WHERE A.id
< B.id) AS RowNumber, B.id, B.matricula
FROM T_Consumo AS B
WHERE (((B.matricula)="12gf12"));
Isto para dizer que a consulta terá de ter este resultado
cod_Matricula
1___xx-xx-xx
2___xx-xx-xx
3___xx-xx-xx
1___yy-yy-yy
2___yy-yy-yy
3___yy-yy-yy
Se poderem dar umas luzes sobre o que deva fazer agradecia.
Muito Obrigado pelo vosso tempo e parabéns ao forum!!!
Pergunta
zippo.zippo
Olá.
Estou a fazer uma aplicação em access onde terei de fazer a media de combustível da viatura.
O meu problema é ter varias matriculas na mesma tabela onde me está a criar dificuldades na resolução do mesmo.
Já consegui fazer grande parte da consulta onde
Exemplos..
T_Consumo
id___Matricula___KMActual___litros___Media
1___xx-xx-xx_____0________20______--
2___xx-xx-xx_____450______30______6.7
3___xx-xx-xx_____777______28______8.6
e ate aqui tudo bem!
O problema vem quando passo de matricula por causa do ID
T_Consumo
id___Matricula___KMActual___litros___Media
3___yy-yy-yy______0________20______-2 (Não é este o valor certo mas deveria aparecer em branco tal como no ID=1
4___yy-yy-yy______554______15______2,7 (Quando insiru registos da matricula xx e depois da yy e depois da hh vai ficar tudo trocado tal como neste valor)
5___yy-yy-yy______777______28______12,6
Está é a minha istrução SQL
Testei com RowNumber mas o resoltado não saiu bem o pretendido pois a unica coisa que fez foi contar todos os registos e não os da matricula xx-xx-xx pretendida.
Isto para dizer que a consulta terá de ter este resultado
cod_Matricula
1___xx-xx-xx
2___xx-xx-xx
3___xx-xx-xx
1___yy-yy-yy
2___yy-yy-yy
3___yy-yy-yy
Se poderem dar umas luzes sobre o que deva fazer agradecia.
Muito Obrigado pelo vosso tempo e parabéns ao forum!!!
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.