Wenn ich eine Update-Anweisung wie die folgende ausführe, wird eine Fehlermeldung angezeigt
Fensterfunktionen können nur in den Klauseln SELECT oder ORDER BY angezeigt werden.
UPDATE dbo.Dim_Chart_of_Account
SET Account_Order = LAG([Account_Order]) OVER (ORDER BY [Account_SKey])
Ich weiß, dass dies mit einem aktualisierbaren CTE wie unten leicht umgangen werden kann
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
Meine Frage ist, gibt es Gründe, warum dies in einer Update-Anweisung nicht zulässig ist. Sollte ich vermeiden, ein aktualisierbares CTE als Problemumgehung zu verwenden?
Ich mache mir Sorgen, dass es Probleme bei der Verwendung von Fensterfunktionen mit Update-Anweisungen gibt, und daher möchte ich verstehen, ob dies eine akzeptable Methode ist oder vermieden werden sollte.