如何根据 SELECT 语句的输出逐行更新新创建的 REVENUE 列?

问题描述 投票:0回答:1

我在 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 个值。当子查询跟在 =、!=、<, <= , >、>= 后面或子查询用作表达式时,这是不允许的。

sql sql-server select sql-update set
1个回答
0
投票

使用子查询更新列的方式,为销售数据中的每个产品返回一行,这就是返回多个值的错误的原因。

试试这个吧

UPDATE s SET (s.OrderQuantity * p.ProductPrice)
FROM Sales_Data s
INNER JOIN Product_Lookup p ON p.ProductKey = s.ProductKey
© www.soinside.com 2019 - 2024. All rights reserved.