Account satement -simplicity is the best

 DECLARE @AccountBalance TABLE

(

    TransactionType CHAR(1)

    ,[Date] DATETIME

    ,[Description] VARCHAR(100)

    ,Amount DECIMAL(10,2)

    ,Paymenttype VARCHAR(100)

    ,Remarks VARCHAR(100)

)

INSERT INTO @AccountBalance VALUES('C','07/01/2017 14:02:49.323','Credited',12000,'Cash','Done')

INSERT INTO @AccountBalance VALUES('C','07/01/2017 14:04:50.113','Credited',1300.45,'Cheque','Done')

INSERT INTO @AccountBalance VALUES('D','07/03/2017 15:00:10.413','Debited',1500,'RTGS','Done')

INSERT INTO @AccountBalance VALUES('C','07/04/2017 18:02:20.223','Credited',25000,'NEFET','Done')

INSERT INTO @AccountBalance VALUES('D','07/04/2017 03:02:01.123','Debited',25000,'NEFET','Done')

select * from @AccountBalance

SELECT *

        ,(

        ISNULL((SELECT SUM(Amount)

                FROM @AccountBalance a

                WHERE a.[Date]<= AB.[Date] AND TransactionType = 'C'),0) -

        ISNULL((SELECT SUM(Amount)

                FROM @AccountBalance a

                WHERE a.[Date]<= AB.[Date] AND TransactionType = 'D'),0)

        ) BALANCE

FROM @AccountBalance AB

ORDER BY [Date]

Output


check this for more detail and extra method

Comments