अपडेट स्टेटमेंट को चलाते समय, जैसे नीचे दिया गया, मुझे एक त्रुटि मिलती है जो मुझे बता रही है
विंडो किए गए फ़ंक्शन केवल SELECT या ORDER BY क्लॉस में दिखाई दे सकते हैं।
UPDATE dbo.Dim_Chart_of_Account
SET Account_Order = LAG([Account_Order]) OVER (ORDER BY [Account_SKey])
मुझे पता है कि यह नीचे की तरह एक updatable 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
मेरा सवाल यह है कि क्या कोई कारण है कि इसे अपडेट स्टेटमेंट में अनुमति नहीं दी जाती है, क्या मुझे वर्कअराउंड के रूप में अपग्रेडेबल सीटी का उपयोग करने से बचना चाहिए?
मेरी चिंता यह है कि अपडेट स्टेटमेंट्स के साथ विंडो फ़ंक्शंस का उपयोग करते समय समस्याएँ होती हैं और इसलिए मैं यह समझना चाहता हूं कि क्या यह एक स्वीकार्य तरीका है या इसे टाला जाना चाहिए।