Не уверен, является ли это просто запросом, который вы используете для просмотра данных, или если он предположительно находится в поле зрения. Если это просто служебный запрос, вы можете сделать что-то вроде этого.,
declare @firstofmonth as smalldatetime
declare @endofmonth as smalldatetime
--Set the inital month to loop
set @firstofmonth = '01/01/2009'
set @endofmonth = '01/31/2009'
WHILE @firstofmonth >= '09/01/2009' --This would be the condition to end the loop
Begin
select CAST(convert(varchar, a.rechargedate, 112) as datetime)as RechargeDate,
COUNT(distinct a.mobileno) AS UnitTotal,
SUM(a.amount) AS AmountTotal
From recharge a
Where a.rechargedate BETWEEN @firstofmonth AND @endofmonth
group by CAST(convert(varchar, a.rechargedate, 112) as datetime)
order by a.rechargedate
SET @firstofmonth = DateAdd(m,1,@firstofmonth)
SET @endofmonth = DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@firstofmonth())+1,0))
End