Victor, es muy simple lo que necesitas, se puede hacer usando el feature de oracle para partitions de scripts.
Primero creamos una tabla:
Código:
DROP TABLE TABLE_VICTOR PURGE;
CREATE TABLE TABLE_VICTOR TABLESPACE AUXILIAR PCTFREE 5 PCTUSED 95 AS
SELECT CARGA, FECHA FROM (
SELECT 4558 CARGA, TO_DATE('01.02.2008','DD.MM.YYYY') FECHA FROM DUAL UNION ALL
SELECT 4558 CARGA, TO_DATE('01.02.2008','DD.MM.YYYY') FECHA FROM DUAL UNION ALL
SELECT 4559 CARGA, TO_DATE('02.02.2008','DD.MM.YYYY') FECHA FROM DUAL UNION ALL
SELECT 4560 CARGA, TO_DATE('02.02.2008','DD.MM.YYYY') FECHA FROM DUAL UNION ALL
SELECT 4561 CARGA, TO_DATE('03.02.2008','DD.MM.YYYY') FECHA FROM DUAL UNION ALL
SELECT 4561 CARGA, TO_DATE('03.02.2008','DD.MM.YYYY') FECHA FROM DUAL UNION ALL
SELECT 4562 CARGA, TO_DATE('04.02.2008','DD.MM.YYYY') FECHA FROM DUAL
);
Una vez creada la tabla, corremos el siguiente select:
Código:
SELECT CARGA,
FECHA,
CARGA - CARGA_ANTERIOR ERROR
FROM (SELECT CARGA,
FECHA,
LAG(CARGA,1) OVER(ORDER BY CARGA) CARGA_ANTERIOR
FROM TABLE_VICTOR
);
La funcion de windowing LAG es la que mas se ajusta a tus necesidades, en una columna adicional ejecuta el calculo de desplazamiento del campo carga, permitiendo hacer la resta y saber la diferencia a la que tu llamas error.
Bueno, muchos exitos.
Sldo Atte, Mario.