求1查询行与日期的计算汇总
求一查询行与日期的计算汇总
单据日期 收款日期 原单金额 未付金额 本次付款 利息率万
2014-6-2 2014-6-5 16500 16500 800 5
2014-6-2 2014-6-9 16500 15700 20 5
2014-6-2 2014-10-26 16500 15680 500 5
例如:
10月1日 出库 2000块
10月9日 收款 1000快
10月15日 收款 1000块
(8天 * 万5 * 2000 )+ (14天* 万5 *1000)
如果最后一笔没有算清则时间算到今天当日的利息
有点没有头绪啊,求师傅帮忙
------解决思路----------------------
------解决思路----------------------
修正之前直接把利率拿5来算
单据日期 收款日期 原单金额 未付金额 本次付款 利息率万
2014-6-2 2014-6-5 16500 16500 800 5
2014-6-2 2014-6-9 16500 15700 20 5
2014-6-2 2014-10-26 16500 15680 500 5
例如:
10月1日 出库 2000块
10月9日 收款 1000快
10月15日 收款 1000块
(8天 * 万5 * 2000 )+ (14天* 万5 *1000)
如果最后一笔没有算清则时间算到今天当日的利息
有点没有头绪啊,求师傅帮忙
------解决思路----------------------
-- 大概如下
-- 利滚利的算法
select 未付金额 * power(1.0 + 利息率万 / 10000.0 , DATEDIFF(day,付款日期,getdate()) )
from t where 未付金额 > 0
-- 非利滚利的算法
select 未付金额 * 利息率万 / 10000.0 * DATEDIFF(day,付款日期,getdate())
from t where 未付金额 > 0
------解决思路----------------------
修正之前直接把利率拿5来算
;WITH CTE AS(
SELECT ROW_NUMBER()OVER(PARTITION BY 单号 ORDER BY 收款日期)RN,*FROM TB
)
SELECT
T1.*
,T1.未付金额-T1.本次付款 LASTMONEY
,ISNULL(T2.收款日期,GETDATE()) NEXTDATE
,CAST((T1.未付金额-T1.本次付款)*(DATEDIFF(DD,T1.收款日期,ISNULL(T2.收款日期,GETDATE())))*T1.利息率万/10000 AS DECIMAL(19,4))[无利滚利]
,CAST((T1.未付金额-T1.本次付款)*(POWER(1+CAST(T1.利息率万 AS REAL)/10000,DATEDIFF(DD,T1.收款日期,ISNULL(T2.收款日期,GETDATE())))-1) AS DECIMAL(19,4))[利滚利]
FROM
CTE T1
LEFT JOIN CTE T2 ON T1.RN+1=T2.RN AND T1.单号=T2.单号