使用计数更新查询

Bel*_*igh 3 sql-server t-sql sql-server-2008-r2

我正在尝试运行以下更新查询

UPDATE x
SET totalval = COUNT(projs)
FROM Prs x
LEFT JOIN es y
ON x.CS = y.CS
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

消息 157,级别 15,状态 1,第 2 行
聚合可能不会出现在 UPDATE 语句的集合列表中。

应如何更改此语句才能使其成为有效的更新语句?

Eri*_*ing 6

您需要在 CTE 或派生表中单独进行聚合。这是一个应该适合您的 CTE 版本。

WITH    t1
          AS ( SELECT y.CS, COUNT(y.projs) AS records
                FROM es AS y
                GROUP BY y.CS)
     UPDATE x
        SET x.totalval = t1.records
        FROM Prs AS x
        LEFT JOIN t1
        ON  t1.CS = x.CS
Run Code Online (Sandbox Code Playgroud)