2016-12-02 91 views
0

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

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

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

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

我使用Azure的SQL数据库与SQL Server 2016

我的事实表包含数百万行和dim_ref表可以长到几十万行的。

+0

它可以帮助如果您编辑的问题,包括你已经写了这样做这是不太工作SQL预期我们理解。 – mendosi

回答

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 
+0

谢谢!我太害怕加入庞大的事实表。我认为最好的解决方案将使用窗口函数等,但似乎内部加入大型表并不是那种资源密集型的。 –

+0

很高兴帮助:-)如果你有正确的索引,几百万行是没有的...... –

相关问题