select id,year,M1,M2=(M1+M2),M3=(M1+M2+M3)....... from 销售表好象烦琐了点,不知道还有好方法没,关注!

解决方案 »

  1.   

    select id,Year,M1=(select sum(b.M1) from 销售表 b where Year<=b.Year)...
      

  2.   

    select id,year,M1,M2=(M1+M2),M3=(M1+M2+M3)....... from 销售表这还烦琐?
      

  3.   

    可以使用集函数,另外select是对字段的投影操作,所以会有困难
      

  4.   

    --费事写得那么辛苦--生成处理语句
    declare @s varchar(8000),@i int,@fd varchar(8000)
    select @s='',@fd='isnull(M1,0)',@i=2
    while @i<=12
    select @fd=@fd+'+isnull(M'+cast(@i as varchar)+',0)'
    ,@s=@s+',M'+cast(@i as varchar)+'=('+@fd+')'
    ,@i=@i+1
    set @s=stuff(@s,1,1,'')--如果是更新
    exec('update 表 set '+@s)--如果是直接查询
    exec('select 商品ID,M1,'+@s+' from 表')
      

  5.   

    谢谢各位!
    因为所有字段都是非NULL的,所以不必考虑NULL.
    再问一下,如果有一个字段是商品种类,我要查询商品种类的累积销售量能否用以下SQL语句:select 商品种类,'年份'=year,'1月'=sum(M1),'2月'=sum(M1+M2),'3月'= sum(M1+M2+M3)....... from 销售表 
    group by 商品种类,year