以下のようなupdateステートメントを実行すると、エラーメッセージが表示され、
ウィンドウ関数は、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
私の質問は、これがupdateステートメントで許可されていない理由はありますか?回避策として更新可能なcteを使用しないようにすべきですか?
私の懸念は、更新ステートメントでウィンドウ関数を使用するときに問題があるため、これが許容できる方法であるのか、それとも避けるべきなのかを理解したいのです。