求:自来水阶梯水费算法(200)

  • 主题发起人 主题发起人 txzhf
  • 开始时间 开始时间
T

txzhf

Unregistered / Unconfirmed
GUEST, unregistred user!
求:自来水阶梯水费算法一、收费标准分3级阶梯:小于14吨为1级,14吨到25吨为2级,超过25吨为3级 1级为原基本水费,2级为1.5倍水价,3级为2倍水价 基本水费 污水费 总水价一级:<=13吨 1倍 =3.05元/吨 0.6元 3.65元二级:<=25吨 1.5倍=4.58元/吨 0.6元 5.18元三级:>25吨 2倍 =6.10元吨 0.6元 6.70元二、每月抄表的情况如果多月抄表按以下计算方法:基本基数*抄表周期按抄表周期来乘,如果是2月一抄 则1级为小于(2×13)26+1=27吨,2级为28吨到50(2×25)吨,3级为大于50吨各位大哥给个思路,用sql 如何实现
 
问题不清楚。比如1月1抄,20吨水,是20吨都算2级呢?还是14-20这之间才算2级?个人感觉应该是后者更合理吧,如果是前者的话,也太简单了,就说后者的算法吧:假设表ZLS(自来水)的结构是: SL(抄表的数量) ZQ(抄表的周期)那么每次的水费算法:CREATE FUNCTION [dbo].[UserMin] (@A int, @B int) RETURNS int AS BEGIN Declare @Result int Set @Result = @A If @B<@Result set @Result=@B Return @ResultENDCREATE FUNCTION [dbo].[UserMax] (@A int, @B int) RETURNS int AS BEGIN Declare @Result int Set @Result = @A If @B>@Result set @Result=@B Return @ResultENDselect (dbo.UserMin(14 * ZQ, SL)*3.05 + dbo.UserMin(dbo.UserMax(SL - 14 * ZQ, 0), 11 * ZQ) * 3.05 * 2 + dbo.UserMax((SL - 25 * ZQ), 0) * 3.05 * 3) + 0.6 as result from zls
 
不好意思忘了说明,水费要生成明细2001001 2009-05-01 00:00:00 第一级居民生活用水 2.5000 .0000 71 177.5000 177.5000 .0000 132922001001 2009-05-01 00:00:00 第二级居民生活用水 3.3000 .0000 52 171.6000 171.6000 .0000 132922001001 2009-05-01 00:00:00 第三级居民生活用水 4.1000 .0000 428 1754.8000 1754.8000 .0000 13292
 
用case when语句应该可以实现啊.case when 用水量<=13 then 用水量*1*3.05+0.6when 用水量<=25 then 用水量*1.5*3.05+0.6else 用水量*2*3.05+0.6end
 
后退
顶部