阶梯计费存储过程
在做一个物业管理系统,收费模块中,有些收费根据用量不同决定收费标准。
如以下部分收费:
电收费标准:0-260/0.85度元、261-600/每度增加0.05元、601以上每度增加0.3元
计算方法:如用了564度电,则电费=260*0.85+(564-260)*0.9=494.6元。
水费收费标准:0-22吨每方3.8元,22-30方4.5元,30方以上5元
计算方法:如用了23吨水,则水费=22*3.8+(23-22)*4.5=88.1元
……
涉及两张表:收费项目表、梯度费用表
关于怎么计算费用,纠结了好久。。。谷歌、百度良久没找到解决方法,只好自己想办法解决。
于是有了以下代码
ALTER PROCEDURE [dbo].[sp_calc_floor_charge] @ChargeItem_Id VARCHAR(36), @Count INT AS SELECT SUM(d.amount*d.FloorPrice) FROM ( SELECT c.FloorPrice,amount=(CASE WHEN c.Num1>0 THEN c.EndNum WHEN (c.Num1<0 AND c.Num2>0) THEN c.Num2 ELSE 0 END) FROM ( SELECT b.[Count],b.[Count]-a.EndNum Num1,b.[Count]-a.StartNum+1 Num2,a.EndNum, a.FloorPrice FROM PM_ChargeItem_Floor a,(SELECT @Count [Count]) b WHERE a.chargeitem_uid=@ChargeItem_Id ) c ) d
功能总算实现了。。做个笔记,备忘。
作者:http://www.guolingfa.cn
出处:http://www.guolingfa.cn
关于作者:初出茅庐。如有问题或建议,请多多赐教!
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接
如有问题,可以通过guo@guolingfa.cn 联系我,非常感谢。