--> 测试数据: #T
if object_id('tempdb.dbo.#T') is not null drop table #T
create table #T (num1 int,num2 int,date datetime)
insert into #T
select 100,300,'2008-4-2' union all
select 200,500,'2008-4-3' union all
select 300,800,'2008-4-4'select
num1=(select sum(num1) from #T where date<=t.date),
num2=(select sum(num2) from #T where date<=t.date),
date
from #T as t/*
num1        num2        date
----------- ----------- -----------------------
100         300         2008-04-02 00:00:00.000
300         800         2008-04-03 00:00:00.000
600         1600        2008-04-04 00:00:00.000
*/

解决方案 »

  1.   

    --> 测试数据: #T1
    if object_id('tempdb.dbo.#T1') is not null drop table #T1
    create table #T1 (num1 int,num2 int,date datetime)
    insert into #T1
    select 100,300,'2008-4-2' union all
    select 200,500,'2008-4-3' union all
    select 300,800,'2008-4-4'
    go
    select
        num1=(select sum(num1) from #T1 where date<=t.date),
        num2=(select sum(num2) from #T1 where date<=t.date),
        date
    from #T1 as t
    go
    drop table #T1/*
    num1        num2        date
    ----------- ----------- -----------------------
    100         300         2008-04-02 00:00:00.000
    300         800         2008-04-03 00:00:00.000
    600         1600        2008-04-04 00:00:00.000(3 row(s) affected)
    */
      

  2.   

    create table #tb(num1 int,num2 int,date datetime)
    insert #tb select 100,300,'2008-4-2'
    insert #tb select 200,500,'2008-4-3'
    insert #tb select 300,800,'2008-4-4'update t 
    set num1=(select sum(num1) from #tb where date<=t.date),
    num2=(select sum(num2) from #tb where date<=t.date)
    from #tb t select * from #tbnum1 num2 date
    100 300 2008-04-02 00:00:00.000
    300 800 2008-04-03 00:00:00.000
    600 1600 2008-04-04 00:00:00.000
      

  3.   

    create table #tb(num1 int,num2 int,date datetime)
    insert #tb select 100,300,'2008-4-2'
    insert #tb select 200,500,'2008-4-3'
    insert #tb select 300,800,'2008-4-4'declare @num1 int,@num2 int
    select @num1 = 0,@num2=0
    update #tb set
    num1 = @num1,
    num2 = @num2,
    @num1= @num1+num1,
    @num2= @num2+num2select * from #tbnum1 num2 date
    100 300 2008-04-02 00:00:00.000
    300 800 2008-04-03 00:00:00.000
    600 1600 2008-04-04 00:00:00.000
      

  4.   

    create table #T (num1 int,num2 int,date datetime)
    insert into #T
    select 100,300,'2008-4-2' union all
    select 200,500,'2008-4-3' union all
    select 300,800,'2008-4-4'
    select * from #tselect sum(a.num1) as num1,
    sum(a.num2) as num2,
    b.date
    from #t as a
    join #t as b
    on a.date<=b.date
    group by b.date
    drop table #t