Sql-Server-2008-R2

執行 Sum In Update 語句

  • May 7, 2020

我正在嘗試執行此更新語句,但它一直給我錯誤

(3 行受影響)

消息 157,級別 15,狀態 1,第 9 行

聚合可能不會出現在 UPDATE 語句的集合列表中。

為了能夠將總和添加到第二個欄位,我需要做什麼 diff ?

Create Table #ABCD
(
 time1 decimal(16,4)
 ,time2 decimal(16,4)
)
Insert Into #ABCD(time1) Values
('12.01'), ('13.04'), ('22.22')

Update #ABCD
SET time2 = SUM(time1/60/60)

一種方法是計算 CTE 內的聚合(我上個月在部落格上寫過這個):

;WITH CTE AS 
(
 SELECT time1, time2, t2 = SUM(time1) OVER()
 FROM #abcd
)
UPDATE CTE SET time2 = t2/60/60;

但我不明白將在整個表中聚合的相同 SUM() 放入每一行的列中的價值。似乎更容易將這個單個值儲存在一個變數中,或者在執行時計算它(只需使用 CTE 中的查詢)。

引用自:https://dba.stackexchange.com/questions/128646