按日期计算利息

时间:2016-02-23 11:56:18

标签: sql sql-server sql-server-2012-express

我现在处于一个非常棘手的境地。使用MSSQL 2012 Express。

我有一个voucher表,我正在检索PARTY A的详细信息。

在以下查询结果中,除最后一列INTEREST外,我收到的所有详细信息都已成功。 在上一栏中,我需要找到前一行INTEREST AMOUNT的{​​{1}}。

说明

BALANCE做了PARTY A价值的RS。 10000.00日期01-01-2016。 公司JOBWORK在05-01-2016日期支付CASH RS 5000.00。 所以在PARTY A列中,我需要计算RS的兴趣。 10000天4天,假定利率为12%。 等等。

INTEREST

1 个答案:

答案 0 :(得分:1)

这个以365.25天/年计算。将该数字更改为您需要的任何数字:

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