아래와 같은 업데이트 문을 실행할 때 오류 메시지가 나타납니다.
창 함수는 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를 해결 방법으로 사용하지 않아야합니까?
내 관심사는 update 문과 함께 창 함수를 사용할 때 문제가 있으므로 이것이 허용 가능한 방법인지 또는 피해야하는지 이해하고 싶습니다.