我有一些数据,其值为'分享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';
答案 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