У меня есть запрос, который позволяет мне вернуть количество событий по EventID, которые произошли с даты параметра (@STARTDATE) до 28 дней назад. Я хотел бы иметь возможность вернуть количество событий, произошедших за предыдущие 28 дней.
COUNT (DISTINCT (CASE when EventID between DATEADD(YEAR,-0,DATEADD(DAY, DATEDIFF(DAY, 0, @STARTDATE), -28)) and DATEADD(Year,-0,@STARTDATE) then EVentID END)) TwentyEightDays
Мне нужно иметь возможность выполнить аналогичный запрос, в котором счетчик EVENTID начинается через 29 дней с @STARTDATE до 56 дней после @STARTDATE.
Любая помощь приветствуется.


Чтобы подсчитать события за 28 дней до указанной даты, я бы использовал:
COUNT(DISTINCT CASE WHEN eventdate >= DATEADD(day, -28, @StartDate) AND
eventdate <= @startdate
THEN EventId
END) as TwentyEightDays
От 29 дней до 56 дней после:
COUNT(DISTINCT CASE WHEN eventdate >= DATEADD(day, 29, @StartDate) AND
eventdate <= DATEADD(day, 56, @StartDate)
THEN EventId
END)
Примечание. Предполагается, что у вас есть столбец для рассматриваемой даты. Сомневаюсь, что это EventId.
Спасибо, я попробовал это, и это, кажется, работает. Спасибо. У меня будет большая база данных, чтобы попробовать завтра, и я отвечу снова. Большое спасибо за помощь.
Сегодня у меня есть большая выборка данных, и она не возвращает результатов. Если у кого-то есть еще предложения, буду признателен. Я собираюсь продолжить исследование этого сегодня.
Числа были в обратном порядке, но этот запрос работал:
COUNT(ОТЛИЧНЫЙ СЛУЧАЙ, КОГДА eventdate >= DATEADD(день, -56, @StartDate) И дата события <= DATEADD(день, -29, @StartDate) ТОГДА EventId END)
Спасибо Гордону за помощь!
Вы не показали запрос. Вы показали выражение, предположительно используемое в предложении
SELECTилиHAVING.