首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

简单存储过程

2013-10-14 
求一个简单存储过程原表数据上面的S_SaleManager是销售表S_MonthlyData是月份表我要在这个基础上再做一些

求一个简单存储过程
原表数据简单存储过程


上面的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

热点排行