SQL更新其连接值的SUM

mar*_*vpc 47 sql sum sql-update

我正在尝试将数据库中的字段更新为其连接值的总和:

UPDATE P
SET extrasPrice = SUM(E.price)
FROM dbo.BookingPitchExtras AS E
INNER JOIN dbo.BookingPitches AS P ON E.pitchID = P.ID
    AND P.bookingID = 1
WHERE E.[required] = 1
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我收到以下错误:

"An aggregate may not appear in the set list of an UPDATE statement."
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jon*_*onH 65

这个怎么样:

UPDATE p
SET p.extrasPrice = t.sumPrice
FROM BookingPitches AS p
INNER JOIN
    (
        SELECT PitchID, SUM(Price) sumPrice
        FROM BookingPitchExtras
        WHERE [required] = 1
        GROUP BY PitchID 
    ) t
    ON t.PitchID = p.ID
WHERE p.bookingID = 1
Run Code Online (Sandbox Code Playgroud)

  • 我今天使用这个语法作为指导来塑造我的更新语句,就像一个魅力。作为旁注,请确保完全按照您在此处看到的方式使用别名值。我一开始没有,花了一些时间试图找出我的问题。 (3认同)

Muh*_*agy 8

上述解决方案的替代方法是使用表的别名:

UPDATE T1 SET T1.extrasPrice = (SELECT SUM(T2.Price) FROM BookingPitchExtras T2 WHERE T2.pitchID = T1.ID)
FROM BookingPitches T1;
Run Code Online (Sandbox Code Playgroud)