MSSQL:根据条件更新来自同一 table 的另一行和另一列的值

MSSQL: Update value from another row and another column from the same table based on conditions

我实际上需要根据条件和来自另一个维度 table 的引用从同一 table 的另一行和另一列更新值 table。


包含销售行样本(两个项目,两天,两个站点)。


在此示例中仅包含一行。

我试图找到的是一个 SQL 查询,该查询将站点和日期匹配的数量更新为 qty_ref - 当参考 table 中有匹配时。我希望我的图片有助于解释这一点。

我在 SQL Server 2016 中使用 Azure SQL 数据库。

我的事实 table 包含数百万行,dim_ref table 可以增长到几千行。

使用内部联接的简单更新应该可以解决问题:

UPDATE f1 
SET qty_ref = f2.qty 
FROM fact_sales f1 
INNER JOIN dim_item_ref d ON(f1.item = d.item)
INNER JOIN fact_sales f2 ON(d.item_ref = f2.item)
WHERE f1.site = f2.site
AND f1.date = f2.date