Ajuda em um select

Prezados, estou fazendo um select que está me fritando a cuca… o foda é que é muito simples.

SELECT MIN(dbo.abastecimentos.km) AS inicial, MAX(dbo.abastecimentos.km) AS final, MAX(dbo.abastecimentos.km) - MIN(dbo.abastecimentos.km) AS result, dbo.veiculos.limitekm, dbo.veiculos.placa, dbo.veiculos.condutor FROM dbo.abastecimentos INNER JOIN dbo.veiculos ON dbo.abastecimentos.placa = dbo.veiculos.idveiculo WHERE (dbo.abastecimentos.data BETWEEN CONVERT(DATETIME, '[inicial]', 102) AND CONVERT(DATETIME, '[final]', 102)) GROUP BY dbo.veiculos.placa, dbo.veiculos.limitekm, dbo.veiculos.condutor

se as informações no banco de dados está desta forma :

[table]
[tr]
[td]491 06/05/2013 321.809
509 13/05/2013 322.810
512 15/05/2013 323.401
520 20/05/2013 323.806
527 22/05/2013 324.500
527 22/05/2013 324.500
541 27/05/2013 325.002
[/td]
[/tr]
[/table]

o resultado é o seguinte :

inicial final result limitekm placa condutor.
321809 325002 3193 0 GML2849 Edson Coimbra Laube

até qui tá certo…

no entanto se as informações estão um pouco fora de ordem:

[table]
[tr]
[td]09/05/2013 106.083
31/05/2013 111.408
02/05/2013 104.690
22/05/2013 109.410
15/05/2013 107.659
17/05/2013 108.463
24/05/2013 110.042
06/05/2013 105.240
27/05/2013 110.365
13/05/2013 107.116
20/05/2013 0
20/05/2013 0
20/05/2013 108.805
23/05/2013 109.797
28/05/2013 110.895
[/td]
[/tr]
[/table]

o resultado é esse :

inicial final result limitekm placa condutor.
0 111408 111408 0 GZQ2703 Vinicius.

percebam que não pegou o KM INICIAL

alguem pode me dar uma Luz ?

Prezados, percebi que o erro está no valor ZERO(rs) óbvio… que mancada…
mas…
agora não estou conseguindo filtras o MIN()… quando o valor é maior que zero…

Faca sub selects para min e max, coloque tudo numa view e faca um select simples na view ordenando pela data