Під час запуску оператора оновлення, наприклад, наведеного нижче, я отримую помилку про це
Віконні функції можуть відображатися лише в пунктах SELECT або ORDER BY.
UPDATE dbo.Dim_Chart_of_Account
SET Account_Order = LAG([Account_Order]) OVER (ORDER BY [Account_SKey])
Я знаю, що це можна легко вирішити, використовуючи оновлений cte, як нижче
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
Моє запитання: чи є якісь причини, чому це не дозволено в операторі оновлення, я повинен уникати використання оновленого cte в якості вирішення?
Мене хвилює те, що при використанні функцій вікна з операторами оновлення виникають проблеми, і тому я хотів би зрозуміти, чи це прийнятний метод чи його слід уникати.