Podczas uruchamiania instrukcji aktualizacji, takiej jak ta poniżej, pojawia się komunikat o błędzie
Funkcje okienkowe mogą pojawiać się tylko w klauzulach SELECT lub ORDER BY.
UPDATE dbo.Dim_Chart_of_Account
SET Account_Order = LAG([Account_Order]) OVER (ORDER BY [Account_SKey])
Wiem, że można to łatwo obejść za pomocą aktualizowalnego pliku, jak poniżej
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
Moje pytanie brzmi: czy są jakieś powody, dla których nie jest to dozwolone w instrukcji aktualizacji, czy powinienem unikać używania cte z możliwością aktualizacji jako obejścia?
Obawiam się, że podczas używania funkcji okna z instrukcjami aktualizacji występują problemy i dlatego chciałbym zrozumieć, czy jest to dopuszczalna metoda, czy należy jej unikać.