我想在不使用循环的情况下生成从 1 到 100 的数字。我该怎么做?
问问题
72 次
3 回答
2
递归 CTE:
with nums as (
select 1 as num
union all
select num+1 from nums where num < 100
)
select num from nums
现在哲学问题是:你的作业是否考虑递归循环?
于 2012-08-20T20:50:29.987 回答
0
您可以在 T-SQL 中执行此操作 - 这是此博客条目中的第二条语句:
http://trycatchfinally.net/2012/03/return-a-list-of-all-dates-between-a-start-and-end-date/
基本上,您使用系统表中的行,然后使用 RANK() OVER() 在您想要的任何范围内对它们进行编号:
DECLARE @Start INT,
@End INT
SET @Start = 1
SET @End = 100
;WITH numberlist(number)
AS (SELECT RANK() over(order by c1.object_id,
c1.column_id,
c2.object_id,
c2.column_id)
from sys.columns c1
cross
join sys.columns c2)
SELECT @Start + number - 1
FROM numberlist
WHERE @Start + number - 1 <= @End
于 2012-08-20T20:47:58.880 回答
0
创建并执行以下存储过程:
DECLARE @sequence int
UPDATE YourTable SET sequence = sequence + 1, @sequence = sequence + 1
SELECT @sequence AS ‘sequence’
于 2012-08-20T20:50:28.397 回答