เมื่อใช้คำสั่งอัปเดตเช่นข้อความด้านล่างฉันได้รับข้อผิดพลาดที่แจ้งให้ฉันทราบ
ฟังก์ชั่นที่มีหน้าต่างสามารถปรากฏได้ในคำสั่ง 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 ที่อัพเดตได้เป็นวิธีแก้ปัญหาหรือไม่
ความกังวลของฉันคือว่ามีปัญหาเมื่อใช้ฟังก์ชั่นหน้าต่างที่มีคำสั่งปรับปรุงและดังนั้นฉันต้องการที่จะเข้าใจว่านี่เป็นวิธีที่ยอมรับได้หรือควรหลีกเลี่ยง