And a set based solution might look something like this:--declare datetime variablesDECLARE @d1 DATETIMEDECLARE @d2 DATETIME--set the datesSET DATEFORMAT DMYSET @d1 = '10/11/2002'SET @d2 = '4/4/2003'--remove the day element of the date - this could be moved to the WHERE clause.SET @d1 = DATEADD(d,-DATEPART(d,@d1)+1,@d1)SET @d2 = DATEADD(d,-DATEPART(d,@d2)+1,@d2)--DATEADD(yy,0,0) yields 01/01/1900 - so we can add years and months to give us a tally table of months/yearsSELECT *FROM ( SELECT DATEADD(mm,m,DATEADD(yy,y,0)) as dt FROM (SELECT 1 m UNION SELECT 2 m UNION SELECT 3 m UNION SELECT 4 m UNION SELECT 5 m UNION SELECT 6 m UNION SELECT 7 m UNION SELECT 8 m UNION SELECT 9 m UNION SELECT 10 m UNION SELECT 11 m UNION SELECT 12 m) months CROSS JOIN (SELECT 100 y UNION SELECT 101 y UNION SELECT 102 y UNION SELECT 103 y UNION SELECT 104 y ) years ) sWHERE dt BETWEEN @d1 AND @d2
macka.--There are only 10 types of people in the world - Those who understand binary, and those who don't.