SQL查询:返回从参数日期起28天到参数日期后56天的值

SQL查询:返回从参数日期起28天到参数日期后56天的值,sql,sql-server,tsql,datediff,Sql,Sql Server,Tsql,Datediff,我有一个查询,允许我按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返回从参数日期(@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计数从@STARTDATE开始的29天到@STARTDATE之后的56天


感谢您的帮助。

要计算从28天前到给定日期的事件,我将使用:

COUNT(DISTINCT CASE WHEN eventdate >= DATEADD(day, -28, @StartDate) AND
                         eventdate <= @startdate
                    THEN EventId
               END) as TwentyEightDays
COUNT(eventdate>=DATEADD(day,-28,@StartDate)和
eventdate=DATEADD(第29天@StartDate)和

eventdate数字顺序相反,但此查询有效:

计数(eventdate>=DATEADD(day,-56,@StartDate)和
eventdate您没有显示查询。您显示了一个表达式,可能在
SELECT
HAVING
子句中使用。谢谢,我尝试了,它似乎有效。谢谢。我明天将有一个更大的数据库尝试,并将再次回复。非常感谢您的帮助。我今天有一个更大的数据示例,这不是问题如果有人有更多的建议,我将不胜感激。今天我将继续对此进行研究。
COUNT(DISTINCT CASE WHEN eventdate >= DATEADD(day, 29, @StartDate) AND
                         eventdate <= DATEADD(day, 56, @StartDate)
                    THEN EventId
               END)