Calcul des intérêts par date

Je suis maintenant dans une situation très délicate. Utiliser MSSQL 2012 Express.

J'ai une table de voucher partir de laquelle je récupère les détails suivants pour le PARTY A par exemple.

Dans le résultat de la requête suivante, j'obtiens tous les détails avec succès sauf la dernière colonne INTEREST . Dans la dernière colonne, je dois find le INTEREST AMOUNT de la rangée précédente BALANCE .

EXPLICATION

PARTY A fait notre valeur JOBWORK de RS. 10000.00 à la date 01-01-2016. COMPANY CASH paie PARTY A RS 5000.00 à la date 05-01-2016. Donc, dans la colonne INTEREST , j'ai besoin de calculer l'intérêt de RS. 10000 pendant 4 jours à un taux d'intérêt supposé de 12%. Etc.

 VOUCHER_NO VOUCHER_DATE FROM TO DR CR BALANCE INTEREST -------------------------------------------------------------------------------------------------------- 1 01-01-2016 PARTY A JOBWORK 10000.00 -10000.00 2 05-01-2016 CASH PARTY A 5000.00 -5000.00 NEED INTEREST OF 10000.00 HERE 3 15-01-2016 CASH PARTY A 4000.00 -1000.00 NEED INTEREST OF 5000.00 HERE 

Celui-ci calcule avec 365,25 jours / an. Changez ce nombre pour ce dont vous avez besoin:

 SELECT*INTO #bal FROM(VALUES(1,{d'2016-01-01'},CAST(-10000.00 AS DECIMAL(28,2))),(2,{d '2016-01-05'},CAST(-5000.00 AS DECIMAL(28,2))),(3,{d '2016-01-15'},CAST(-1000.00 AS DECIMAL(28,2))))AS b(vno,dt,bal); SELECT *, interest=ROUND((LAG(bal)OVER(ORDER BY vno))*(.12*DATEDIFF(DAY,LAG(dt)OVER(ORDER BY vno),dt)/365.25),2) FROM #bal; DROP TABLE #bal; 

Résultat:

 +-----+-------------------------+-----------+------------+ | vno | dt | bal | interest | +-----+-------------------------+-----------+------------+ | 1 | 2016-01-01 00:00:00.000 | -10000.00 | NULL | | 2 | 2016-01-05 00:00:00.000 | -5000.00 | -13.140000 | | 3 | 2016-01-15 00:00:00.000 | -1000.00 | -16.430000 | +-----+-------------------------+-----------+------------+