2016-12-02 32 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

很高興幫助:-)如果你有正確的索引,幾百萬行是沒有的...... –

相關問題