Как сделать SQL зацикливание на дату? - PullRequest
0 голосов
/ 06 октября 2009
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 '2009-07-01' AND '2009-07-31'*
group by CAST(convert(varchar, a.rechargedate, 112) as datetime)
order by a.rechargedate

выше мой запрос sql. в
(((( a.rechargedate BETWEEN '2009-07-01' AND '2009-07-31' )))))
Я бы изменил это с помощью цикла. так что если в следующий раз я хочу изменить дату на август. он автоматически зациклится сам. мне не нужно вручную вводить дату до 2009-08-01 ........ кто-нибудь может мне помочь? покажи как это сделать?

Ответы [ 2 ]

1 голос
/ 06 октября 2009

Не уверен, является ли это просто запросом, который вы используете для просмотра данных, или если он предположительно находится в поле зрения. Если это просто служебный запрос, вы можете сделать что-то вроде этого.,

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
0 голосов
/ 06 октября 2009

все зависит от вашей логики, вот несколько вариантов:

  1. принять @startDate и @endDate в качестве параметров для sproc
  2. если вы можете логически связать эти даты с текущей датой, вы можете вычислить их в sproc (или функции) на основе getdate () (даст вам текущую дату)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...