如何基于另一个表多次更新表

时间:2019-03-29 17:54:04

标签: sql sql-server

我试图根据另一个表中的数据多次更新一个表。以下是我目前的表格设计:

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

感谢您的帮助。

非常感谢。

2 个答案:

答案 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函数和{{的组合)对QtyGoods的每个唯一组合的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
相关问题