使用每个匹配记录的值增加金额

时间:2016-01-08 18:37:39

标签: sql sql-server sql-update

我有两张桌子

TableA:
ID  Amount
1   100

TableB:
ID  Interest
1   10
1   20

我希望通过每个交配记录对TableB的兴趣来增加TableA.Amount。如何为此编写更新语句?我在下面尝试过,但它仅使用第一个匹配记录更新金额。

UPDATE a
SET a.Amount = a.Amount + b.Intereset
FROM TableA a JOIN TableB b ON a.ID = b.ID

这是我得到的结果:

TableA:
ID  Amount
1   110

但是,预期的结果是:

TableA:
ID  Amount
1   130

2 个答案:

答案 0 :(得分:3)

试试这个

Mapper.CreateMap<A, B>() .ForMember(x => x.Prop, opt => opt.Condition(src => src.

Correlated sub-query

或使用UPDATE TableA SET Amount = Amount + ISNULL((SELECT sum(b.Intereset) FROM TableB b WHERE TableA.ID = b.ID),0)

Cross Apply

答案 1 :(得分:1)

如果您担心不匹配的值,那么最好的解决方案是使用FROM子句:

UPDATE a
    SET Amount = a.Amount + b.SumInterest
    FROM TableA a JOIN
         (SELECT SUM(b.interest) as SumInterest
          FROM TableB b
          GROUP BY b.id
         ) b
         ON a.id = b.id;