No recursive CTE necessary:CREATE PROCEDURE [dbo].[usp_GetWeekendDaysInYear]( @year int)ASDECLARE @sats tinyint, @suns tinyint;SET DATEFIRST 7; -- SundaySELECT @sats = CASE WHEN DATEPART(yyyy, DATEADD(wk, 52, DATEADD(dd, 7 - DATEPART(dw, DATEADD(yy, @year - DATEPART(yy, 0), 0)), DATEADD(yy, @year - DATEPART(yy, 0), 0)))) = @year THEN 53 ELSE 52 ENDSET DATEFIRST 1; -- ModaySELECT @suns = CASE WHEN DATEPART(yyyy, DATEADD(wk, 52, DATEADD(dd, 7 - DATEPART(dw, DATEADD(yy, @year - DATEPART(yy, 0), 0)), DATEADD(yy, @year - DATEPART(yy, 0), 0)))) = @year THEN 53 ELSE 52 ENDSELECT @year AS [Year], @sats AS [Saturdays], @suns AS [Sundays];GO EXEC [dbo].[usp_GetWeekendDaysInYear] @year = 2009GO