又是一个数据表的问题????
我有两个结构一样的表,表A和表B. 比如表A有如下记录:
编号 金额
0001 54
0001 89
0001 454
0001 875
0002 787
0002 464
0003 453
(同一个编号有多条记录)
表B有如下记录:
编号 金额
0001 0
0002 5
0003 0
(同一个编号只有一条记录)
怎样实现把表A中同一个编号的记录的金额加总起来,再存到表B的金额字段中,两个表中的记录都不少,所以要考虑到速度的问题。
我是用Query的,(Paradox数据库)
问题点数:40、回复次数:5Top
1 楼domustdo(大头)回复于 2003-06-02 00:55:08 得分 10
你的表A中的编号是按照非递减顺序排列的么?
如果是,可能快一点的办法是同一个编号的计算后并赋值给B表后,在当前位置做个标记,下次从这个标记开始计算另一个编号的,这样不用从头来过。Top
2 楼runnerrunning(千寻失业ing&那是我所不能了解的事)回复于 2003-06-02 01:42:25 得分 30
select 编号 ,sum(金额) from 表A group by 编号;
然后写入表B
select a1 ,sum(a2) from a11 group by a1;
如果支持insert ...select...就更简单
insert into a11 select a1 ,sum(a2) from a11 group by a1;
insert into 表B select 编号 ,sum(金额) from 表A group by 表A.编号;
Top
3 楼xiaozerong(木头人)回复于 2003-06-02 02:03:41 得分 0
上面的两位先谢过了;
To domustdo(大头):
请问“在当前位置做个标记”怎么做啊?
To runnerrunning(将程序进行到底)
我的意思是:把表A中同一个编号的记录的金额加总起来,然后用这个加起来的值
来更新表B中这一个编号的金额的值,而并非新插入一条记录。
比如:
表A编号为0001的四条记录加起来后等于1472,然后到表B中找到编号0001的记录,把它的金额修改为1472。Top
4 楼runnerrunning(千寻失业ing&那是我所不能了解的事)回复于 2003-06-02 02:24:19 得分 0
这个更简单:
update a11_copy set a11_copy.a2 = (select sum(a11.a2) from a11 where a11_copy.a1 = a11.a1);
你把all_copy改为表B
a11改为 表A
a1改为编号
a2改为金额
Top
5 楼runnerrunning(千寻失业ing&那是我所不能了解的事)回复于 2003-06-02 02:24:50 得分 0
一句话就成功
好累,要睡了。。。。Top




