WITH
DeletedAgg AS
(
SELECT
ImageId,
UpDelta = COUNT(CASE Score WHEN +1 THEN 1 END),
DownDelta = COUNT(CASE Score WHEN -1 THEN 1 END)
FROM
deleted
GROUP BY
ImageId
),
InsertedAgg AS
(
SELECT
ImageId,
UpDelta = COUNT(CASE Score WHEN +1 THEN 1 END),
DownDelta = COUNT(CASE Score WHEN -1 THEN 1 END)
FROM
inserted
GROUP BY
ImageId
)
UPDATE
img
SET
VoteUp = ISNULL(img.VoteUp, 0) - del.UpDelta + ins.UpDelta,