这样的求和的SQL语句怎么写(高手请进!谢谢)
如表A:
Select * from A
Date_ CodeNo Code_ Num_
2007-01-01 AA01 AA 10
2007-01-02 AA02 AA 15
2007-01-02 AA03 AA -12
2007-01-03 AA02 AA 20
2007-01-04 AA05 AA -18
现在我要得到以下这样的结果:
Date_ CodeNo Code_ Num_01 Num_02 Num_03
2007-01-01 AA01 AA 10 0 10
2007-01-02 AA02 AA 15 0 25
2007-01-02 AA03 AA 0 -12 13
2007-01-03 AA04 AA 20 0 33
2007-01-04 AA05 AA 0 -18 15
即:第一行中最后一个数等于前两数之和(Num_01+Num_02=Num_03);从第二个数开始,最后一个数等于上一行最后一个数加上同行倒数第三个减去同行倒数第二个数的
和(上行的Num_03+本行的Num_01-本行的Num_02=本行的Num_03)
谢谢。
------解决方案--------------------declare @ta table(Date_ varchar(10),CodeNo varchar(5), Code_ varchar(5), Num_ int)
insert @ta select '2007-01-01 ', 'AA01 ', 'AA ', 10
insert @ta select '2007-01-02 ', 'AA02 ', 'AA ', 15
insert @ta select '2007-01-02 ', 'AA03 ', 'AA ', -12
insert @ta select '2007-01-03 ', 'AA04 ', 'AA ', 20
insert @ta select '2007-01-04 ', 'AA05 ', 'AA ', -18
select Date_,CodeNo,Code_,
Num_01=case when Num_> 0 then Num_ else 0 end,
Num_02=case when Num_ <0 then Num_ else 0 end,
Num_03=(select sum(num_) from @ta where Code_=a.Code_ and CodeNo!> a.CodeNo)
from @ta a
(1 行受影响)
(1 行受影响)
(1 行受影响)
(1 行受影响)
(1 行受影响)
Date_ CodeNo Code_ Num_01 Num_02 Num_03
---------- ------ ----- ----------- ----------- -----------
2007-01-01 AA01 AA 10 0 10
2007-01-02 AA02 AA 15 0 25
2007-01-02 AA03 AA 0 -12 13
2007-01-03 AA04 AA 20 0 33
2007-01-04 AA05 AA 0 -18 15
(5 行受影响)
------解决方案----------------------借用roy_88(中国风_燃烧你的激情!!!) 的數據
declare @A table(Date_ varchar(10),CodeNo varcha