DECLARE @startDate DATE = '2012-01-01', @endDate DATE = '2012-12-31';WITH CTE(N) AS (SELECT 1 FROM (VALUES(1),(1),(1),(1),(1),(1),(1),(1),(1),(1))a(N)),CTE2(N) AS (SELECT 1 FROM CTE x CROSS JOIN CTE y),CTE3(N) AS (SELECT 1 FROM CTE2 x CROSS JOIN CTE2 y),CTE4(N) AS (SELECT 1 FROM CTE3 x CROSS JOIN CTE3 y),CTE5(N) AS (SELECT 1 FROM CTE4 x CROSS JOIN CTE4 y),CTE6(N) AS (SELECT 0 UNION ALL SELECT TOP (DATEDIFF(day,@startDate,@endDate)) ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) FROM CTE5),TALLY(N) AS (SELECT DATEADD(day, N, @startDate) FROM CTE6 WHERE DATENAME(weekday,DATEADD(day, N, @startDate)) = 'Monday')SELECT NFROM TALLYORDER BY N;