大家好,我有这样一个表:表名:A编码 滞纳金截止日期 费用额 滞纳金天数 滞纳金额 标志   
001 2012-08-20 20  a
001 2012-08-22 10 a
001 2012-08-18 100 a在sqlserver里写个作业。每天8点自动计算 滞纳金天数 和 滞纳金额滞纳金额 = 0.5% * 滞纳金天数 * 费用额滞纳金天数= now -滞纳金截止日期
如果 标志 = a 则  
{如果 now 大于 滞纳金截止日期 则 滞纳金天数= now -滞纳金截止日期 ,滞纳金额 = 0.5% * 滞纳金天数 * 费用额
否则 滞纳金天数= 0 ,滞纳金额 = 0}
求一存储过程

解决方案 »

  1.   

    不用存储过程,就是一句updateupdate a
    set 滞纳金额 = case when 标志 = 'a' then 0.005  * datediff(day,滞纳金截止日期,getdate()) * 费用额 else 0 end,
    滞纳金天数 = case when 标志 = 'a' then datediff(day,滞纳金截止日期,getdate())  else 0 end
      

  2.   

    不用存储过程,就是一句updateupdate a
    set 滞纳金额 = case when 标志 = 'a' then 0.005  * datediff(day,滞纳金截止日期,getdate()) * 费用额 else 0 end,
    滞纳金天数 = case when 标志 = 'a' then datediff(day,滞纳金截止日期,getdate())  else 0 end
      

  3.   

    上面少了一个条件now 大于 滞纳金截止日期不用存储过程,就是一句updateupdate a
    set 滞纳金额 = case when 标志 = 'a' and datediff(day,滞纳金截止日期,getdate()) > 0 then 0.005  * datediff(day,滞纳金截止日期,getdate()) * 费用额 else 0 end,
    滞纳金天数 = case when 标志 = 'a' and datediff(day,滞纳金截止日期,getdate()) > 0 then datediff(day,滞纳金截止日期,getdate())  else 0 end