select *,
       total=(  select sum(product1) 
                from tablename 
                where [date]<=a.date
              )
from tablename a

解决方案 »

  1.   

     同意 victorycyz(中海) victorycyz(中海) 真是高人!
      

  2.   

    select *, total=(select sum(product1) from A1 where [date]<=a.date) from A1 a
    注意product1字段的类型,要是数字的哦
      

  3.   

    不同意 victorycyz(中海)的方法,这种方法在数据量少的时候还可以,我测试过30000万记录,如果使用上面的方法,一定慢得你受不了的。我建议在前台计算。
      

  4.   

    --累计求总数,并将它做为一字段
    CREATE PROCEDURE dbo.CountTotalAsField AS
    declare @date varchar(20),@product1 int,@total int
    declare @re table(mydate varchar(20),myproduct1 int,mytotal int
    set @total=0
        DECLARE cursor1 CURSOR FOR
    select * from table1
    open cursor1
    FETCH NEXT FROM cursor1 INTO @date,@product1
    WHILE @@FETCH_STATUS = 0
    begin
    set @total=@total+@product1
    insert @re select @date,@product1,@total
    FETCH NEXT FROM cursor1 INTO @date,@product1
    end CLOSE cursor1
             DEALLOCATE cursor1

    select * from @re
    go