大神们进来下,求帮助
有一个A表, 金额是空,一个客户有唯一的一个批次
客户 批次 金额
1 光大 2012
2 农行 2013
3 建行 2014
有一个B表,一个客户可能有多个批次
客户 批次 金额
1 光大 2012 100
2 光大 2013 140
3 光大 2014 150
4 农行 2012 111
现在我查询A表,select 客户,批次 from A where 条件
结果为:
客户 批次
1 光大 2012
2 农行 2013
3 建行 2014
然后我现在想 通过这个查询的结果的每一行,去查询B表金额的总数,然后去通过客户,批次 更新A表的金额
刚刚可能我没说明白,在说一下
sql
------解决方案--------------------
update tableA set 金额=(select sum(金额) from tableB tb where tb.客户=tableA.客户 and tb.批次=tableA.批次)
------解决方案--------------------2005以上可用:
;
WITH cte
AS ( SELECT 客户 ,
批次 ,
SUM(金额) 金额
FROM b
GROUP BY 客户 ,
批次
)
UPDATE a
SET a.金额 = b.金额
FROM a
INNER JOIN cte b ON a.客户 = b.客户
AND a.批次 = b.批次
------解决方案--------------------
update a set a.金额=b.money
from tbA as a cross apply
(select sum(money)money from tbB as b where a.客户=b.客户 and a.批次=b.批次 group by b.客户,b.批次)as b
1楼2楼都是正解,我的方法也可以,我跟2楼版主的一样,都需要2005以上版本才能运行
如果是2000的话可以考虑1楼的方法
------解决方案--------------------如果是2000的话,可以把我那个with里面的语句先存到临时表,更新完删除即可。