Hola tokkaido:
No me gustaría simplemente darte la respuesta, así es que te ayudo con la parte que creo te puede traer más problemas y te toca completarla, de acuerdo?
Checa este script:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.13 sec)
-> (1250, '2011-01-11'),(1500, '2011-02-02'),(1800, '2011-02-15');
Query OK, 5 rows affected (0.08 sec)
+------------+------------+
| kilometros | fecha |
+------------+------------+
| 1000 | 2011-01-01 |
| 1200 | 2011-01-03 |
| 1250 | 2011-01-11 |
| 1500 | 2011-02-02 |
| 1800 | 2011-02-15 |
+------------+------------+
-> kilometros ,
-> WHERE fecha
< T1.fecha
) kilometros_a_restar
+------------+---------------------+
| kilometros | kilometros_a_restar |
+------------+---------------------+
| 1200 | 1000 |
| 1250 | 1200 |
| 1500 | 1250 |
| 1800 | 1500 |
+------------+---------------------+
mysql>
Como verás, si restas las dos columnas prácticamente tienes el resultado, es decir, para cada registro estoy buscando mediante una subconsulta el inmediato anterior (con la función MAX(fecha) y la condición WHERE). el único detalle que faltaría sería para el primer registro, ya que si haces la resta el resultado será un NULL
Código MySQL:
Ver original -> kilometros -
-> WHERE fecha
< T1.fecha
) kilometros
+---------------------+
| kilometros |
+---------------------+
| 200 |
| 50 |
| 250 |
| 300 |
+---------------------+
Te tocaría validar que cuando el resultado de la subconsulta sea un null lo reemplace con 0. Espero que con eso no tendrás problemas.
Saludos
Leo.