Quando eseguo una dichiarazione di aggiornamento, come quella qui sotto, viene visualizzato un errore che mi dice che
Le funzioni con finestra possono apparire solo nelle clausole SELECT o ORDER BY.
UPDATE dbo.Dim_Chart_of_Account
SET Account_Order = LAG([Account_Order]) OVER (ORDER BY [Account_SKey])
So che questo può essere facilmente risolto usando un cte aggiornabile, come di seguito
WITH my_cte AS (
SELECT [Account_Order], LAG([Account_Order]) OVER (ORDER BY [Account_SKey]) AS acc_order_lag
FROM Dim_Chart_of_Account
)
UPDATE my_cte
SET [Account_Order] = acc_order_lag
La mia domanda è: ci sono dei motivi per cui ciò non è consentito in una dichiarazione di aggiornamento, dovrei evitare di usare un cte aggiornabile come soluzione alternativa?
La mia preoccupazione è che ci siano problemi quando si usano le funzioni della finestra con le istruzioni di aggiornamento e quindi vorrei capire se questo è un metodo accettabile o dovrebbe essere evitato.