首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Access >

求一条sql多谢

2012-03-07 
求一条sql谢谢!有表如下:姓名当前累计金额金额序号a0101a0152a0103想变为如下:姓名当前累计金额金额序号a1

求一条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=


热点排行