在论坛中出现的比较难的sql问题:34(递归 获取连续值问题)

最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了。

所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路。


求一个获取连续值的方法。

http://bbs.csdn.net/topics/390620211


这个用spt_values也可以。

如果是SQL Server 2005及以后的版本,可以通过递归来实现,非常简单。


我的解法:

;with r
as
(
select 1 as number   --第一个数

union all

select number + 1
from r
where r.number < 10 --最后一个数
)

select *
from r
--option(maxrecursion 1000)
/*
number
1
2
3
4
5
6
7
8
9
10
*/

你可能感兴趣的:(在论坛中出现的比较难的sql问题:34(递归 获取连续值问题))