【问题标题】:MSSQL: Update value from another row and another column from the same table based on conditionsMSSQL:根据条件更新同一表中另一行和另一列的值
【发布时间】:2017-04-17 11:44:51
【问题描述】:

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


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


在本例中只包含一行。

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

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

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

【问题讨论】:

  • 如果您编辑您的问题以包含您已经编写的用于执行此操作的 SQL,这可能会帮助我们理解它并没有按预期工作。

标签: sql sql-server reference dimension


【解决方案1】:

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

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

【讨论】:

  • 谢谢!我太害怕自己加入巨大的事实表。我认为最好的解决方案是使用窗口函数等,但似乎内部连接大表根本不是资源密集型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 2019-08-20
  • 1970-01-01
相关资源
最近更新 更多