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

问题描述 投票:0回答:2

我有一个查询,允许我返回从参数日期(@STARTDATE)到28天之前发生的EventID事件数。我希望能够返回过去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天开始。

任何帮助表示赞赏。

sql sql-server tsql datediff
2个回答
0
投票

要计算从前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


0
投票

这些数字是相反的顺序,但这个查询有效:

COUNT(eventdate> = DATEADD(day,-56,@ StartDate)和eventdate <= DATEADD(day,-29,@ StartDate),然后是EventId END)

感谢Gordon的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.