如何用SQL语句实现这样的统计?

已知表:
Name Qty
A 100
B 200
C 300
B 400
A 500
C 600
A 700

要求逐行从前向后累加,想得到:
Name Qty TTL
A 100 100
B 200 200
C 300 300
B 400 600
A 500 600
C 600 900
A 700 1300

有无好的方法?谢了.

---------------------------------------------------------------

如果没有其他字段:

select Name,Qty,IDENTITY ( int) AS Id into #Temp from tablename

select Name,Qty,(select sum(Qty) from #Temp where name=a.name and Id<=a.Id) as TTL
from #Temp a

---------------------------------------------------------------

典型的数据累加问题。
如果有一个PID(IDENTITY int)字段,就只要一句够了:

select Name,Qty,(select sum(Qty) from TableName where name=a.name and PId<=a.PId) as TTL
from TableName a

---------------------------------------------------------------

select b.name,b.qty,(select sum(a.qty)
from (select name,qty,identity(int) as id into temp
from 已知表) a
where a.name=b.name and a.id<=b.id)
from (select name,qty,identity(int) as id into temp
from 已知表) b
---------------------------------------------------------------

should be this result sum row by row
Name Qty TTL
------------------------------ ----------- -----------
A 100 100
B 200 300
C 300 600
D 400 1000
E 500 1500
F 600 2100
F 700 2800

(7 row(s) affected)

select Name,Qty,(select sum(Qty) from Table1 where PId<=a.PId) as TTL
from Table1 a

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus