我有两个处理库存的表,最近一直不同步。
数据需要更新才能再次同步,tableB
始终是正确的,因此我们将更新基于此表,并使用此表中的数据更新tableA
。
我正在尝试通过加入进行更新。
使用以下代码,我尝试了多种不同的更新方式,例如使用xcolumn2
上的where语句,删除选择部分等。
我是否缺少一段语法,或者我对此采取了错误的方法?
update tableA
set tableA.columnA = tableB.columnA
--select
--tableA.xcolumn2,
--tableA.columnA,
--tableB.columnA,
--from tableA as tableA
left join
(select xcolumn1, xcolumn2, sum(columnA) as columnA, sum(xcolumn3) as xcolumn3
from tableB as tableB group by xcolumn1, xcolumn2) as tableB
on tableA.xcolumn2 = tableB.xcolumn2
group by
tableA.xcolumn2,
tableA.columnA,
tableB.columnA,
having sum(tableA.columnA) != sum(tableB.columnA)
答案 0 :(得分:2)
我想你的更新应该是这样的:
UPDATE tableA
SET tableA.columnA = tableB.columnA
FROM tableA
JOIN ( SELECT xcolumn1 ,
xcolumn2 ,
SUM(columnA) AS columnA
FROM tableB AS tableB
GROUP BY xcolumn1 ,
xcolumn2
) AS tableB
ON tableA.xcolumn2 = tableB.xcolumn2
AND tableA.xcolumn1 = tableB.xcolumn1
AND (tableA.columnA <> tableB.columnA
OR tableA.columnA IS NULL)