Saat menjalankan pernyataan pembaruan, seperti yang di bawah ini, saya mendapatkan kesalahan mengatakan itu
Fungsi Windowed hanya dapat muncul di klausa SELECT atau ORDER BY.
UPDATE dbo.Dim_Chart_of_Account
SET Account_Order = LAG([Account_Order]) OVER (ORDER BY [Account_SKey])
Saya tahu bahwa ini dapat dengan mudah dikerjakan menggunakan cte yang dapat diupdate, seperti di bawah ini
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
Pertanyaan saya adalah, apakah ada alasan mengapa ini tidak diizinkan dalam pernyataan pembaruan, haruskah saya menghindari menggunakan cte yang dapat diupdate sebagai solusinya?
Kekhawatiran saya adalah bahwa ada masalah ketika menggunakan fungsi jendela dengan pernyataan pembaruan dan oleh karena itu saya ingin memahami apakah ini metode yang dapat diterima atau harus dihindari.