Do you want another simple way ? Without Loop ?
Try this!
Declare @Start Date,@End Date
Select @Start = '2011/12/10', @End='2012/02/05'
;With CTE
As
(
Select @Start [Date]
Union All
Select DateAdd(Day,1,[Date]) [Date] From CTE Where [Date] <=DateAdd(Day,-1,@End)
),Final
As
(
Select Cast(Cast(Year([Date]) as varchar) + '-' + datename(Month,[Date]) + Cast('-01' as varchar) as date) [Seq], Cast(datename(Month,[Date]) as varchar(3)) [Months],Count(1) [Counts] from CTE
Group By datename(Month,[Date]), Cast(Year([Date]) as varchar) + '-' + datename(Month,[Date]) + Cast('-01' as varchar)
)
Select Months, Counts from Final Order by Seq
Go
Result
Months Counts
------ ------
Dec 22
Jan 31
Feb 5
Note:
Use MAXRECURSION when the recursion exceeds 100! (Default is 100 !)
Cheers
www.SQLServerbuddy.blogspot.com
iLink Multitech Solutions
Ravimakhija88, if this helps please login to Mark As Answer. | Alert Moderator