比如一张表  有一个商品每月的销售情况  
肥皂    201801    50
肥皂    201802    31
肥皂    201803    33
肥皂    201804    0
.
肥皂    201811    1
肥皂    201812    21现在需要你计算出一个新值  是这一年每月的累积销量
肥皂    201801    50
肥皂    201802    81
肥皂    201803    114
肥皂    201804    114如何用查询的方式得出结果
还要用到存储过程
我想了很多方法但是越用越复杂  

解决方案 »

  1.   

    表有id字段的对吧
    参考了之前大神给我的解决方案
    http://bbs.csdn.net/topics/392315964update demo表 set total_cost=(select sum(cost) from(select * from demo表) b where b.日期>demo表.日期);
      

  2.   

    存储过程,只需要把这个sql语句加入到出错过程里面就好了
      

  3.   

     如果只是查询
    -- 全部累计
    SELECT DATA.*, @total:=@total+销售值 as 累计
    FROM tb DATA, (SELECT @total:=0) _x
    ORDER BY 商品,日期
    ;
    -- 各商品单独累计
    SELECT DATA.*, @total:=销售值+IF(@sp=商品,@total,0) as 累计,@sp:=商品
    FROM tb DATA, (SELECT @total:=0, @sp:=null) _x
    ORDER BY 商品,日期
    ;如果要更新到表,昌把查询做为子查询与要更新的表关联