如何解决"聚合可能不会出现在UPDATE语句的集合列表中。"

时间:2017-07-17 08:55:56

标签: sql sql-server

我有一些数据,其值为'分享02015'。我拆分数据并使用最大值递增数字部分。然后,当我尝试更新查询时,它会抛出以下错误。

  

聚合可能不会出现在UPDATE语句的集合列表中。

我使用的查询是

UPDATE dbo.Ledgers
SET LedgerName = 'Share 00' +(CAST( MAX(CAST(SUBSTRING(LedgerName, CHARINDEX(' ', LedgerName) + 1, 6) AS int)+1)AS nvarchar))
WHERE LedgerName = 'Share 00877';

1 个答案:

答案 0 :(得分:0)

如错误消息中所述,您无法在更新MAX列表中使用SET或任何其他聚合函数

尝试使用CTE更新

WITH cte
     AS (SELECT new_LedgerName = 'Share 00' + ( Cast(Max(Cast(Substring(LedgerName, Charindex(' ', LedgerName) + 1, 6) AS INT)
                                                         + 1)AS NVARCHAR) ),
                LedgerName
         FROM   dbo.Ledgers
         WHERE  LedgerName = 'Share 00877'
         GROUP BY LedgerName)
UPDATE cte
SET    LedgerName = new_LedgerName