按日期计算利息

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