DECLARE @Test TABLE (OutDt datetime, packsetid int, shetkariid int, inqty int, outqty int) INSERT INTO @Test VALUES ('20060101', 1, 1, 10,5) INSERT INTO @Test VALUES ('20060101', 1, 1, 10,5) INSERT INTO @Test VALUES ('20060101', 1, 1, 10,5) INSERT INTO @Test VALUES ('20060102', 1, 1, 10,10) INSERT INTO @Test VALUES ('20060102', 1, 1, 10,3) INSERT INTO @Test VALUES ('20060102', 1, 1, 20,10) INSERT INTO @Test VALUES ('20060103', 1, 1, 20,5) select Test.date, Test.packsetid, Test.shetkariid, Test.inqty, Test.outqty, sum(ISNULL(Tbl1.inqty - Tbl1.outqty,0)) as RunningBalance FROM (SELECT Test.outdt as date ,Test.packsetid, Test.shetkariid, SUM(Test.inqty) as inqty, SUM(Test.outqty) as outqty FROM @Test Test GROUP BY Test.outdt,Test.packsetid, Test.shetkariid) Test LEFT JOIN @Test Tbl1 ON Test.date > Tbl1.OutDt AND Test.packsetid = Tbl1.packsetid AND Test.shetkariid = Tbl1.shetkariid GROUP BY Test.date,Test.packsetid, Test.shetkariid,Test.inqty, Test.outqty