CREATE CURSOR curSource (dDate D , nValue I) INSERT INTO curSource VALUES (DATE(2008,1,1),5) INSERT INTO curSource VALUES (DATE(2008,1,10),3) * THIS IS THE SQL CORRECT SOLUTION, BUT VFP SQL is too limited SELECT; dDate; , nValue - NVL((SELECT TOP 1 nValue FROM curSource WHERE dDate>X.dDate ORDER BY dDate),0); FROM curSource X; ORDER BY 1 * climbing on mirrors SELECT; X.dDate; , X.nValue - NVL(X1.nValue,0); FROM curSource X; LEFT JOIN curSource X1 ON X1.dDate>X.dDate; WHERE X1.dDate=(SELECT MIN(dDate) FROM curSource WHERE dDate>X.dDate) OR X1.dDate IS NULL; ORDER BY 1