此查询返回使用变量定义的日期范围之间的所有天数,结果集是 31 个不同的值。但是,递归 CTE 的工作方式是第一个查询只执行一次,第二个查询对之前创建的结果集起作用。因此,似乎会有重复,但它返回了不同的结果集。CTE 是在内部应用 DISTINCT 子句还是其他什么?我如何获得 DISTINCT 值?
DECLARE
@DateFrom DATE = '20130101' ,
@DateTo DATE = '20130131'
WITH Days
AS ( SELECT CAST(@DateFrom AS DATETIME) AS dt
UNION ALL
SELECT DATEADD(dd, 1, dt)
FROM Days s
WHERE DATEADD(dd, 1, dt) <= CAST(@DateTo AS DATETIME)
)
SELECT dt
FROM Days