我有一组这样的数据:
MinNo: 2500
MaxNo: 2700
IncrementStep: 10
在最小数和最大数之间,将列出具有给定步骤的所有可能数字的列表,如下所示:
2500
2510
2520
2530
2540
2550
2560
2570
2580
2590
2600
2610
2620
2630
2640
2650
2660
2670
2680
2690
2700
我知道这可以使用 while 循环来实现。请让我知道这是否可以通过使用公用表表达式的选择查询来完成(如果需要)。提前致谢。
最佳答案
您可以使用数字表(或 master..spt_values)。
declare @MinNo int
declare @MaxNo int
declare @IncrementStep int
set @MinNo = 2500
set @MaxNo = 2700
set @IncrementStep = 10
select @MinNo + Number * @IncrementStep
from master..spt_values
where type = 'P' and
number between 0 and (@MaxNo - @MinNo) / @IncrementStep
或递归 CTE
;with C as
(
select @MinNo as Num
union all
select Num + @IncrementStep
from C
where Num < @MaxNo
)
select Num
from C
关于sql-server-2005 - SQL查询以在范围之间的给定步骤中获取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8586558/