【发布时间】:2018-08-05 05:48:53
【问题描述】:
碰巧遇到下面的sql语句
DECLARE @SDate DATETIME
DECLARE @TDate DATETIME
SET @SDate = '2011-9-01 00:00:00.000'
SET @TDate = '2011-10-01 00:00:00.000'
;WITH CTE AS
(
SELECT @SDate Date
UNION ALL
SELECT Date + 1 FROM CTE WHERE Date + 1 <= @TDate
)
SELECT Date FROM CTE
据我所知,该语句应该返回相当多的重复项,因为递归中的每次迭代都会将整个列递增 1,结果应该是所有中间表的 UNION ALL。
但令我惊讶的是,结果表中没有重复,只有从 2011 年 9 月 1 日到 2011 年 10 月 1 日的所有不同日期。为什么会这样?
【问题讨论】:
标签: sql-server tsql recursion common-table-expression