sql-server-2005 - SQL查询以在范围之间的给定步骤中获取数字

标签 sql-server-2005 tsql

我有一组这样的数据:

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/

相关文章:

sql - 查找具有包含 xml 字符串值的字段的所有表

sql-server - 如何获取表存储信息

sql-server - 当过滤器是逗号分隔的值列表时如何过滤记录

sql - 如何获取未在多对多关系中表示的行?

sql - 插入临时表查询

sql - 如何在变量中加入动态sql语句和普通语句

sql-server - SQL Server 2005 T-SQL 问题 : Need help in omitting records

c# - Base64 字符串编码 C# 与 TSQL

ruby-on-rails - 将 Rails 应用程序从 Windows 连接到 SQL Server 2005

sql-server - 表使用的空间