各位大哥请帮忙,如何进行分段计费?(100分)

  • 主题发起人 主题发起人 lzliang
  • 开始时间 开始时间
L

lzliang

Unregistered / Unconfirmed
GUEST, unregistred user!
最近要做一个收费系统,要求收费时,根据收费单价表分段计算。
例如收费单价表内 1.1999.05 10.00/月
2.1999.12 12.00/月
3.2000.06 14.00/月
客户前来交费,从1999.06~2000.12,请问用SQL如何计算出总收费?
 
1。据厍里的时间字段是什么类型的,
2。有没有用sql server(ms sql server,interbase,orcal等)
3。再具体一点。
 
用的日期字段是Datetime,数据库是paradox或access。
 
select sum(money) as account
from UTable
where (theDate>='1999-6-1') and (theDate<'2001-1-1') //1999-6-1~2000-12-31
 
Victortim:
你好,谢谢你的关注。我的意思是收费单价库是一独立的数据库记录着单价
调整的情况,如 1999.05 10.00 1999.05起 按每月10.00收费
1999.12 12.00 1999.12起 按每月12.00收费
2000.06 14.00 2000.06起 按每月14.00收费
客户前来交1999.06~2000.12其期费用,应该是:
1999.06~1999.11 10*6=60.00
1999.12~2000.05 12*6=72.00
2000.06~2000.12 14*7=98.00
合计 : 230.00
用SQL实现。
 
我觉得用编程的方法实现更好,用SQL不太好.
计算时由后往前计算, 如1999.06~2000.12 , 则:
收费单价库按降序排列
2000.06 14.00 2000.06起 按每月14.00收费
1999.12 12.00 1999.12起 按每月12.00收费
1999.05 10.00 1999.05起 按每月10.00收费

1: 2000.12大于的第一个记录2000.6,得14.00

2000.12 ~ 2000.6 14*7=98.00

2: 2000.6-1=2000.5,大于的第一个记录1999.12,得12.00

2000.05 ~ 1999.12 12*6=72.00


3: 1999.12-1=1999.11,大于的第一个记录1999.5 得10.00
且1999.6>1999.5 (最后一轮)

1999.11~1999.6 10*6=60.00
 
接受答案了.
 
后退
顶部