Vyvanand,I suggest you start by reading the following paying particular attention to the word 'unordered'.http://en.wikipedia.org/wiki/Relation_(database)As you can see, you have to tell SQL what order the rows are in.Here are two examples:eg1-- *** Test Data ***CREATE TABLE #eg1( RowOrder int NOT NULL ,Value int NOT NULL);INSERT INTO #eg1SELECT 1, 90UNION ALL SELECT 4, 20UNION ALL SELECT 3, 15UNION ALL SELECT 2, 23;-- *** End Test Data ***SELECT T1.RowOrder, T1.Value ,T1.Value + COALESCE(T2.Value, 0) AS ValuePlusPreviousValueFROM #eg1 T1 LEFT JOIN #eg1 T2 ON T2.RowOrder = T1.RowOrder - 1ORDER BY RowOrder;
eg2 -- *** Test Data ***CREATE TABLE #eg2( ValueDate datetime NOT NULL ,Value int NOT NULL);INSERT INTO #eg2SELECT '20120103', 90UNION ALL SELECT '20120101', 23UNION ALL SELECT '20120115', 20UNION ALL SELECT '20120110', 15;-- *** End Test Data ***WITH OrderedEgAS( SELECT ValueDate, Value ,ROW_NUMBER() OVER (ORDER BY ValueDate) AS RowNum FROM #eg2)SELECT T1.ValueDate, T1.Value ,T1.Value + COALESCE(T2.Value, 0) AS ValuePlusPreviousValueFROM OrderedEg T1 LEFT JOIN OrderedEg T2 ON T2.RowNum = T1.RowNum - 1ORDER BY ValueDate;