求一个简单存储过程
原表数据
上面的S_SaleManager是销售表S_MonthlyData是月份表
我要在这个基础上再做一些操作,如果a.FEETYPE值
等于1的话 就a.FEE1*b.Consumer1+a.FEE2*b.Consumer2
等于2的话 就a.FEE3*b.Consumer3+a.FEE4*b.Consumer4
在判断这个值是否大于FixedFeed
如果大于这个值就显示他本身的值 如果不大于这个值 就显示FixedFee的值 然后赋值给一个新的字段 应收总金额
最终我要的这些字段
400号码 CP计算方式 消费抵消 市话单价 长话单价 移动铁通单价,联通电信单价,
市话 长话 移动铁通 联通电信 应收总金额
[解决办法]
首先,我把你的语句适当的简化了一下:
select a.Number400,a.FeeType, a.FixedFee,a.FeeTypeName,a.Fee1,a.Fee2,a.Fee3,a.Fee4,
b.Consumer1,b.Consumer2,b.Consumer3,b.Consumer4,
case when a.FeeType = 1 and a.Fee1*b.Consumer1+a.Fee2*b.Consumer2 > a.FixedFee)
then a.Fee1*b.Consumer1+a.Fee2*b.Consumer2
when a.FeeType = 2 and a.Fee3*b.Consumer3+a.Fee4*b.Consumer4 > a.FixedFee)
then a.Fee3*b.Consumer3+a.Fee4*b.Consumer4
else a.FixedFee
end
from S_SaleManager a
left join S_MonthlyData b
on b.Number400=a.Number400
and b.FeeType=a.FeeType
然后改造成存储过程后是:
create procedure proc_testing(@Month int)
as
select a.Number400,a.FeeType, a.FixedFee,
a.FeeTypeName,a.Fee1,a.Fee2,a.Fee3,a.Fee4,
b.Consumer1,b.Consumer2,b.Consumer3,b.Consumer4,
case when a.FeeType = 1
and a.Fee1*b.Consumer1+a.Fee2*b.Consumer2 > a.FixedFee
then a.Fee1*b.Consumer1+a.Fee2*b.Consumer2
when a.FeeType = 2
and a.Fee3*b.Consumer3+a.Fee4*b.Consumer4 > a.FixedFee
then a.Fee3*b.Consumer3+a.Fee4*b.Consumer4
else a.FixedFee
end
from S_SaleManager a
left join S_MonthlyData b
on b.Number400=a.Number400
and b.FeeType=a.FeeType
and b._Month = @Month --参数
go