Office中国论坛/Access中国论坛

标题: 如何用SQL语句实现累加 [打印本页]

作者: zhaoxyong    时间: 2007-12-2 20:55
标题: 如何用SQL语句实现累加
如何用SQL语句实现累加
有一张表
ID    数量
1     3
2     6
3     9
--------------------------
用SQL语句变成:  (数量上面的累加, 第一条的"累计值"为 数量的值即3  第二条记录的累计值
为 第一条的累计值3+第一条的数量的值6  =9)
ID    数量   累计
1     3           3
2     6           9
3     9          18

----------------------请大家帮忙
作者: zhaoxyong    时间: 2007-12-2 21:13
标题: 希望大家帮帮忙
因为我要写一个ABC法的存储过程,我用游标实现了,但游标是一行一行的,太慢了故想用SQL语句实现.

作者: t小宝    时间: 2007-12-2 22:22
试试这样行不行:
Select ID, 数量, DSum("[数量]","表","[ID]<=" & [ID] ) AS 累计 From 表
作者: laomao    时间: 2007-12-5 14:17
我也有类似问题,关注.
作者: Grant    时间: 2007-12-5 15:28
原帖由 t小宝 于 2007-12-2 22:22 发表
试试这样行不行:
Select ID, 数量, DSum("[数量]","表","


改用子查询会更好,Dsum函数速度不敢恭维
作者: t小宝    时间: 2007-12-7 18:03
Grant版主:用子查询什么写呀?如果是下面的语句,子查询的条件什么设呢?
Select ID, 数量, (Select Sum(数量) From 表 Where ID<=[这个参数什么写呢?]) AS 累计 From 表
作者: andymark    时间: 2007-12-7 20:35
SELECT a.ID, a.数量, (select sum(数量) from 表1 where ID<=a.ID) AS 累计
FROM 表1 AS a
作者: t小宝    时间: 2007-12-7 21:33
思来想去,不得其解,原来是改表名实现!!!
版主厉害
作者: Victor_Duane    时间: 2007-12-7 21:45
不知道DSUM快还是子查询快
没有测试过
作者: andymark    时间: 2007-12-7 21:51
SQL 中尽量少用DSUM,数据量大时差别很明显
作者: Victor_Duane    时间: 2007-12-7 21:57
不过我上次用了子查询,也慢的我怕了,后来我就用关系,明显速度改变,就是多用了两个查询
作者: andymark    时间: 2007-12-7 22:07
关系联连是最快的
作者: Victor_Duane    时间: 2007-12-7 22:11
嗯,ACCESS的查询还是挺不错的
作者: t小宝    时间: 2007-12-7 22:40
原帖由 Victor_Duane 于 2007-12-7 21:57 发表
不过我上次用了子查询,也慢的我怕了,后来我就用关系,明显速度改变,就是多用了两个查询


能说说你是什么做的吗?
作者: goto2008    时间: 2007-12-7 23:23
严重地想学习哦......

Victor_Duane大哥,能做个小例子上来吗,,,,,嘿嘿......
作者: Victor_Duane    时间: 2007-12-7 23:26
那个问题我已经忘记掉了,是一个网友问的一个用查找特定数据的问题,用了四五个查询才搞定,因为有点难度,所以有点印象
作者: goto2008    时间: 2007-12-7 23:30
哦.................................
作者: gdfsslec    时间: 2007-12-8 11:32
这种办法可能会比DSUM和子查询要快
作者: andymark    时间: 2007-12-8 13:37
Dmin 跟DSUM是同类型的涵数,速度没什么区别
作者: gdfsslec    时间: 2007-12-8 18:22
疏忽
可以设法保证ID=1的内容不被删除,然后把
If ID = DMin("ID", TabName) Then TemY = 0
改为
If ID = 1Then TemY = 0
这回可以了吧




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3