我试图根据另一个表中的数据多次更新一个表。以下是我目前的表格设计:
Table A Table B
-------------------- --------------------
Goods QTY Type Goods QTY Type
Wood 0 R1 Wood 1 R1
Wood 10 R2 Wood 4 R1
Glass 10 R1 Wood 5 R1
Glass 0 R2 Glass 5 R2
Glass 4 R2
因此,我想根据表B中的 QTY 对表A中的 QTY 进行添加。更新语句。
预期的输出是这样的:
Table A
--------------------
Goods QTY Type
Wood 10 R1 ---> Previous value: 0
Wood 10 R2
Glass 10 R1
Glass 9 R2 ---> Previous value: 0
我已经尝试了以下更新语句,但无济于事:
UPDATE Table A
SET A.QTY = A.QTY + B.QTY
FROM Table A as A JOIN Table B as B ON A.Goods = B.Goods AND A.Type = B.Type
但是,上述查询语句仅更新表B上的第一个不同值。它仅将QTY
的{{1}}更新为Wood
,并将1
的{{ 1}}到QTY
。
感谢您的帮助。
非常感谢。
答案 0 :(得分:1)
您可以使用内联子查询,例如:
UPDATE TableA A
SET A.QTY = A.QTY + (
SELECT SUM(B.QTY) FROM TableB B WHERE A.Goods = B.Goods AND A.Type = B.Type
)
答案 1 :(得分:0)
首先,通过使用Table B
函数和{{的组合)对Qty
和Goods
的每个唯一组合的Type
字段求和,聚合sum
1}}子句。
group by
然后将这个子查询加入select t.goods, t.type, sum(t.qty) as tqty
from [table b] t
group by t.goods, t.type
:
Table A