我在 Sales_Data 表中创建了名为 Revenue 的列,我需要根据以下查询的输出来更新它:
SELECT
(Sales_Data.OrderQuantity * Product_Lookup.ProductPrice) AS Revenue
FROM
Sales_Data
INNER JOIN
Product_Lookup ON Product_Lookup.ProductKey = Sales_Data.ProductKey
从上面可以看出,为了计算收入,我通过
Sales_Data
PK 和 FK 加入了 Product_Lookup
和 ProductKey
表。上面的结果是 56,046 行,我需要将其插入到 Revenue
表的 Sales_data
列中。
我认为我应该使用子查询,但不幸的是到目前为止我还没有成功。
这里有人可以帮我解决这个问题吗?
提前致谢。
我尝试以下查询失败:
UPDATE Sales_Data
SET Revenue = (SELECT
(Sales_Data.OrderQuantity * Product_Lookup.ProductPrice) AS Revenue
FROM
Sales_Data
INNER JOIN
Product_Lookup ON Product_Lookup.ProductKey = Sales_Data.ProductKey)
我收到以下消息:
子查询返回超过 1 个值。当子查询跟在 =、!=、<, <= , >、>= 后面或子查询用作表达式时,这是不允许的。
使用子查询更新列的方式,为销售数据中的每个产品返回一行,这就是返回多个值的错误的原因。
试试这个吧
UPDATE s SET (s.OrderQuantity * p.ProductPrice)
FROM Sales_Data s
INNER JOIN Product_Lookup p ON p.ProductKey = s.ProductKey