Cuando ejecuto una declaración de actualización, como la siguiente, aparece un error que me dice que
Las funciones en ventana solo pueden aparecer en las cláusulas SELECT u ORDER BY.
UPDATE dbo.Dim_Chart_of_Account
SET Account_Order = LAG([Account_Order]) OVER (ORDER BY [Account_SKey])
Sé que esto se puede solucionar fácilmente usando un cte actualizable, como a continuación
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
Mi pregunta es: ¿hay alguna razón por la cual esto no está permitido en una declaración de actualización? ¿Debería evitar usar un cte actualizable como solución alternativa?
Mi preocupación es que hay problemas al usar funciones de ventana con declaraciones de actualización y, por lo tanto, me gustaría entender si este es un método aceptable o si debe evitarse.