按日期计算利息
Interest Calculation By Date
我现在处境非常棘手。使用 MSSQL 2012 Express。
我有一个 voucher
table,我正在从中检索 PARTY A
的以下详细信息。
在下面的查询结果中,除了最后一列 INTEREST
之外,我成功获取了所有详细信息。
在最后一列中,我需要找到前一行 BALANCE
.
的 INTEREST AMOUNT
解释
PARTY A
完成了我们 JOBWORK
的 RS。 10000.00,日期 01-01-2016。
公司 CASH
于 2016 年 5 月 1 日支付 PARTY A
RS 5000.00。
所以在 INTEREST
列中,我需要计算 RS 的利息。 10000 4 天,假设利率为 12%。
等等。
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
这个用365.25计算days/year。将该数字更改为您需要的任何数字:
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;
结果:
+-----+-------------------------+-----------+------------+
| 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 |
+-----+-------------------------+-----------+------------+
我现在处境非常棘手。使用 MSSQL 2012 Express。
我有一个 voucher
table,我正在从中检索 PARTY A
的以下详细信息。
在下面的查询结果中,除了最后一列 INTEREST
之外,我成功获取了所有详细信息。
在最后一列中,我需要找到前一行 BALANCE
.
INTEREST AMOUNT
解释
PARTY A
完成了我们 JOBWORK
的 RS。 10000.00,日期 01-01-2016。
公司 CASH
于 2016 年 5 月 1 日支付 PARTY A
RS 5000.00。
所以在 INTEREST
列中,我需要计算 RS 的利息。 10000 4 天,假设利率为 12%。
等等。
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
这个用365.25计算days/year。将该数字更改为您需要的任何数字:
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;
结果:
+-----+-------------------------+-----------+------------+
| 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 |
+-----+-------------------------+-----------+------------+