我正在使用sql server,这是我的表结构
start end interval
1 3 1
9 12 1
16 20 2
100 120 5
预期结果
1
2
3
9
10
11
12
16
18
20
100
105
110
115
120
我在发布之前试过这个
select start as result,end1,interval
from table
union
select result+1,interval,end1,interval
from table
答案 0 :(得分:2)
这是使用CTE的理想场所。以下代码应该为您提供所需的答案:
;WITH IntervalCTE AS
(
SELECT [start] AS Value, [end], [interval]
FROM T
UNION ALL
SELECT [Value] + [interval], [end], [interval]
FROM IntervalCTE
WHERE [Value] < [end]
)
SELECT Value FROM IntervalCTE ORDER BY Value
我还创建了一个SQL Fiddle,你可以看一下。