2017-07-17 62 views
0

我有一個'Share 02015'值的特定數據。我分割數據並用最大值增加數字部分。然後當我嘗試更新查詢時,它會拋出以下錯誤。如何解決「聚合可能不會出現在UPDATE語句的集合列表中。」

集合可能不會出現在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

正如錯誤消息中提到,您不能使用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 
相關問題