پاسخ شما بدون در نظر گرفتن جواب سوالات پست قبلی:
بروز رسانی بر اساس جوین (update based on join):
your_table:جدولی که دارای یک ستون با مقادیر 1000001 تا 1000000 می باشد
column0: ستونی که در خط قبل توضیح داده شد
value: ستون محاسباتی که باید مقادیرش بروز رسانی بشه بر اساس ستون column0
Numbers: جدول اعداد دارای یک ستون (به نام i) با مقادیر 1 تا 1 میلیون
UPDATE YT
SET YT.value = C.radif
FROM your_table AS YT
INNER JOIN (select i,case when i%2000 = 0 then i-2000 else (2000*(i/2000)) end
+case(i%250)when 0 then 249 else(i%250-1)end *8+((rnk+249)/250) as radif
from (select i, row_number() over(partition by (i+(8*250)-1)/(8*250) order by i) rnk
from Numbers
WHERE i <= 1000000
)d
)c
ON CASE WHEN YT.column0 = '1000000' THEN 1000000 ELSE SUBSTRING(column0, 2, 6) END = c.i;
اصلا کد(کوئری) با متغیرها مشکلی نداره. منظور اینه که شما میتونید مقادیر 8 و 250 رو به عنوان پارامتر به کوئری بدین. یک SP بسازین که دارای این پارمتر ها باشه و بس.پاسخ 2) اگه قرار باشه كه تغيير داشته باشه ،كد خيلي زياد تغيير مي كنه؟
فقط یادت نره قبلش باید یک جدول اعداد بسازین به این جا رجوع کنید:





پاسخ با نقل قول