我正在尝试使用另一个表中另一列的总和来执行更新语句。我想要
customer_ar.current_bal to = sum(ar_transaction.current_balance)
作为测试,我运行此操作以使5个客户的customer_ar.current_bal = 100:
update customer_ar
set current_bal=100
where customer_id in (1502,1329,3096,1516,3605);
接下来我跑了这个:
update customer_ar C
join ar_transaction T on T.customer_id=C.customer_id
set current_bal =
(select sum(current_balance)
from ar_transaction
where C.customer_id =T.customer_id)
where C.customer_id in (1502,1329,3096,1516,3605);
我得到的结果是所有人的余额变为213823.85。对于每个客户,实际的当前余额应该是不同的,并且在50到100之间。
我可以做一个子查询,如果我一次只做一个,它会起作用,但是我试图看看是否有办法让它一次完成所有这些。你看到我做错了吗?
答案 0 :(得分:0)
如果您使用的是sql-server,则可以使用此脚本。
leftHalfScreen = Region(0, 0, getScreen().getBounds().width/2, getScreen().getBounds().height)
leftHalfScreen.highlight(1)
答案 1 :(得分:-2)
我认为您需要对子查询中的行进行分组,以便为每个客户的事务构建总和。
也许这样的事情(只是为了得到这个想法):
update customer_ar p
set current_bal = trans.sumBal
from customer_ar c
join (select customer_id, sum(current_bal) as sumBal from ar_transaction group by customer_id) trans on c.customer_id = trans.customer_id
where p.customer_id = trans.customer_id;
http://sqlfiddle.com/#!17/3dd88/14
<强>更新强> 很抱歉发布了这个无效的SQL。我刚修好了我的榜样。