求一条sql谢谢!
有表如下:
姓名 当前累计金额 金额 序号
a 0 10 1
a 0 15 2
a 0 10 3
想变为如下:
姓名 当前累计金额 金额 序号
a 10 10 1
a 25 15 2
a 35 10 3
我就想得到当前的累计金额,请问我该如何写sql
谢谢!
------解决方案--------------------SELECT *,(select sum(金额) from ttq where a.姓名=姓名 and a.序号> =序号) as 当前累计金额
from ttq a
------解决方案--------------------or
SELECT a.姓名,a.金额,a.序号,sum(b.金额) as 当前累计金额 from ttq a
inner join ttq b on a.姓名=b.姓名 and a.序号> =b.序号
group by a.姓名,a.金额,a.序号
order by a.序号
------解决方案----------------------用子查询
SELECT
姓名,
(select sum(金额) from 表名 where 姓名=t.姓名 and 序号 <=t.序号) as 当前累计金额,
金额,
序号
from 表名 t
------解决方案----------------------如果是要更新,需要使用域函数
update 表名 as t set 当前累计金额=Dsum( "金额 ", "表名 ", "姓名= ' " & t.姓名 & " ' and 序号 <= " & t.序号 & ") "
上述代码是在Access中执行,因为域函数只能在Access内部使用。
如果是在外部执行,需要先将结果生成中间表,然后再用update进行关联更新。
------解决方案--------------------Access使用的是Jet-SQL,而SQL Server使用的是T-SQL,两者用法上相差很大。
Access的Update语句中,对于含有聚合子查询的支持远比不上SQL Server,所以要使用域函数或借助临时表。
JET SQL 帮助(jet4 access2000)下载地址
http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=