MSSQL:根据条件从同一个表中的另一行和另一列更新值

时间:2016-12-02 14:20:12

标签: sql sql-server reference dimension

我需要根据条件和另一个维度表的引用,从同一个表中的另一行和列更新事实表中的值。

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

enter image description here
 在此示例中仅包含一行。

我试图找到的是一个SQL查询,它将qty更新为qty_ref,其中站点和日期匹配 - 并且当参考表中存在匹配时。我希望我的照片有助于解释这一点。

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

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

1 个答案:

答案 0 :(得分:0)

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

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