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 | +-----+-------------------------+-----------+------------+