问题概述:
1. 求tsql存储过程,输入参数@khh(客户号),@jkh(借款号),@jxrq(计息日期), 输出参数@lx(利息)
2. 要能求出任一“给定客户号,给定借款号,给定日期”的利息
说明,下面附图中上面表中有个“到期日期”,还有“利率”和“过期利率”,显见,当@jxrq(计息日期)大于“到期日期”时用“过期利率”而不是“利率”来计算利息。
详见下图

下面举例说明一个利息计算的过程:(为了看着清楚,我加了换行)
例1:
设@jxrq(计息日期)=2008.07.05,则
@lx(利息)=
(2008.07.04-2008.07.02)*0.001(利率)*100(上期余额)+
(2008.07.05-2008.07.04)*0.001(利率)*90(上期余额)
例2:
设@jxrq(计息日期)=2008.07.13,则
@lx=
(2008.07.04-2008.07.02)*0.001*100+
(2008.07.06-2008.07.04)*0.001*90+
(2008.07.10-2008.07.6)*0.001*70+
(2008.07.12-2008.07.10)*0.001*40+
(2008.07.13-2008.07.12)*0.002*40
请注意红色的两行,由于2008.07.12是到期时间,所以2008.07.10--2008.07.13这段时间被以不同利息计算利息,所以得是两行。
例3:
设@jxrq(计息日期)=2008.07.15,则
@lx=
(2008.07.04-2008.07.02)*0.001*100+
(2008.07.06-2008.07.04)*0.001*90+
(2008.07.10-2008.07.6)*0.001*70+
(2008.07.12-2008.07.10)*0.001*40+
(2008.07.15-2008.07.12)*0.002*40
这个例子唯一的不同就是计息时间(2008.07.15)大于最后一次还款的时间(2008.07.14)。
请大侠们指教!
下附建表代码:
create table jk (khh int,jkh int,jksj datetime,dqsj datetime,ll float,gqll float,jkje money)
insert jk (khh,jkh,jksj,dqsj,ll,gqll,jkje) select 1,1,'2008.7.2','2008.7.12',0.001,0.002,100
create table hk (khh int,jkh int,sqsj datetime,sqye money,hksj datetime)
insert hk (khh,jkh,sqsj,sqye,hksj) select 1,1,'2008.7.2',100,'2008.7.4'
union
select 1,1,'2008.7.4',90,'2008.7.6'
union
select 1,1,'2008.7.6',70,'2008.7.10'
union
select 1,1,'2008.7.10',40,'2008.7.14'
各位可以参数下面的帖子,该帖也是我发的但是没得到最终的正确答案。
http://topic.csdn.net/u/20080705/18/e4471fb8-84dd-4a8a-a4bd-33f9504039bf.html#replyachor