我一直在使用一個CTE需要幫助瞭解
declare
@date_start DateTime,
@date_end DateTime
;WITH totalMonths AS
(
SELECT
DATEDIFF(MONTH, @date_start, @date_end) totalM
),
numbers AS
(
SELECT 1 num
UNION ALL
SELECT n.num + 1 num
FROM numbers n, totalMonths c
WHERE n.num <= c.totalM
)
SELECT
CONVERT(varchar(6), DATEADD(MONTH, numbers.num - 1, @date_start), 112)
FROM
numbers
OPTION (MAXRECURSION 0);
這個工程下面的代碼,得到兩個日期範圍之間的幾個月SQL查詢,但我不明白它是如何工作
特別是這部分
numbers AS
(
SELECT 1 num
UNION ALL
SELECT n.num + 1 num
FROM numbers n, totalMonths c
WHERE n.num <= c.totalM
)
在此先感謝,對不起我的英語
查找遞歸公用表表達式...這裏可能是一個重複的帖子:http://stackoverflow.com/questions/14274942/sql-server-cte-and-recursion-example – sgeddes
我不會使用遞歸CTE 「...在兩個日期範圍之間獲得月份」:巨大的過度殺傷力。使用數字/計數表代替... –