Sql-Server

在合併更新語句中使用聚合

  • May 7, 2020

我正在嘗試COUNT()在更新語句中執行語句。但是我的語法出現了這個錯誤

Msg 157, Level 15, State 1, Line 6<br>
An aggregate may not appear in the set list of an UPDATE statement.

我需要更改我的語法以使該語句成功執行嗎?

MERGE masterdata md
USING receivedData rd
ON md.empName = rd.empName
WHEN MATCHED THEN
UPDATE
SET md.numberOfSales = COUNT(rd.SaleID);

我現在無法對此進行測試,但是在 USING 子句中進行聚合應該可以:

MERGE INTO masterdata md
USING (
   SELECT empName, COUNT(SaleID) as CNT
   FROM receivedData
   GROUP BY empName
) rd
   ON md.empName = rd.empName
WHEN MATCHED THEN
   UPDATE SET md.numberOfSales = rd.CNT;

關係模型的一個強大方面是它在 select、join、union 等下是封閉的。封閉的意思是查詢的結果是一個關係(或 SQL 中的表)。因此,很容易形成可以用來代替表格的新派生關係。

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