Chinaunix
标题:
还是 SQL 问题。
[打印本页]
作者:
snow888
时间:
2009-07-24 14:36
标题:
还是 SQL 问题。
两张表
Table A
(
id int not null,
amt decimal(18,2),
constraint PK_A primary key ( id )
)
Table B
(
id int not null,
amt decimal(18,2),
workdate char(10) not null,
constraint PK_B primary key (id,workdate)
)
A.id 与 B.id 外键关联。
要求:一句话用 sum(B.amt) 修改 A.amt 中的值。
修改条件为 A.id = B.id
=====================================
我目前的做法是对 A 表建立 ID 游标
根据 ID 汇总 B 表的 amt ,然后用汇总的 amt 替换 a 表的 amt 值。
但我感觉应该不用这么麻烦,可以一句话完成的。
作者:
lemonhat
时间:
2009-07-25 10:40
1、使用存储过程
2、引入临时表
一个语句应该可以实现,但那个会让人读不明白,而且容易出现意外;让你接班的人很容易很清楚地看懂你的实现过程比写出冗长晦涩的语句来得更重要。
作者:
Germin
时间:
2009-07-25 15:41
merge into a
using ( select id,sum(amt) sumamt
from b
group by b ) b
on a.id = b.id
when matched then update set a.amt = b.sumamt;
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2