【问题标题】:How to update a column using inner join and aggregate function?如何使用内连接和聚合函数更新列?
【发布时间】:2021-12-25 02:59:11
【问题描述】:

我正在尝试通过加入我的购物车表并获取购物车中所有商品的总和来更新我的订单表中所有订单的小计。这是我所拥有的:

UPDATE O 
SET O.subtotal = ISNULL(SUM((C.price - C.discount_price) * C.qty), 0)
FROM Orders AS O
INNER JOIN Cart AS C ON O.cart_id = C.cart_id 
WHERE O.date > '01/01/2021'

但是我得到一个错误

聚合可能不会出现在 UPDATE 语句的集合列表中

我怎样才能使上述语句起作用?

【问题讨论】:

标签: sql sql-server-2008


【解决方案1】:

UPDATE 语句中,您不能使用以下聚合函数:SUM, GROUP BY

正确更新:

UPDATE  Orders   
SET 
    subtotal = C.sum_total 
FROM 
    Orders AS O
INNER JOIN (
    select 
        cart_id,  
        ISNULL(SUM((price - discount_price) * qty), 0) as sum_total 
    from Cart 
    group by 
        cart_id
) AS C ON O.cart_id = C.cart_id
WHERE O.date > '01/01/2021'

【讨论】:

    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    相关资源
    最近更新 更多