ایحاد لیست اعداد در sql server
با استفاده از کد زیر می توانم در sql server لیستی از اعداد متوالی و پشت سر هم را ایجاد کنیم و در خروجی نمایش دهیم. البته این لیست را می توان در جدول های Temp و یا متغیر از نوع Table ذخیره کرد و در زمان های نیاز از آن استفاده کرد.
declare @minNum int = 1
declare @maxNum int = 1000
;with MyNumberList
as
(
select @minNum as ID
union all
select ID + 1 from MyNumberList
where ID < @maxNum
)
select * from MyNumberList
Option (maxrecursion 0)
-- Thanks for watching (+98) 9131253620
--A. Najafzadeh
در دو خط اول دو متغیر به نامهای @minNum و @maxNum را تعریف میکند و به ترتیب مقادیر 1 و 1000 را به آنها اختصاص میدهد. این متغیرها حداقل و حداکثر مقدار دنباله اعداد را مشخص میکنند. با استفاده از کلمه کلیدی WITH یک CTE به نام MyNumberList ایجاد میشود.
بخش select @minNum as ID مقدار اولیه دنباله را به عنوان 1 (یا مقدار @minNum) انتخاب میکند. قسمت union all select ID + 1 from MyNumberList where ID < @maxNum به صورت بازگشتی عمل میکند تا زمانی که مقدار ID کمتر از 1000 (یا مقدار @maxNum) باشد. در هر تکرار، یک عدد به مقدار ID اضافه میکند و این فرایند را تا رسیدن به مقدار @maxNum ادامه میدهد.