日期范围内的tsql总和

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

我有一个与此问题相关的四列的表:EventID(int,null),StartDateTime(datetime,null),EndDateTime(datetime,null),DurationInMinutes(int,null)

我想编写一个查询,该查询将选择一个附加列,以总和该事件发生前7天内发生的事件的总持续时间之和,我不知道如何做到这一点。现在,我正在考虑某种case语句或LAG的SUM,但是我不知道该怎么写。我希望避免任何需要cte的事情,仅是因为我的查询已经有太多了。请帮忙吗?

tsql sum date-range
1个回答
0
投票

发布此答案时有一些假设。假设:

  1. 即使eventid为null,也要包括记录的总和
  2. 总和不包括startdatetime为null的记录
  3. 总和不包括enddatetime为null的记录
  4. 是否会有具有相同事件ID的重叠记录? (不考虑)
  5. 假设表格将按日期和时间排序
SELECT *,
       Isnull(SUM(durationinminutes)
                over (
                  ORDER BY startdatetime, enddatetime ROWS BETWEEN unbounded
                preceding
                AND 7
                preceding), 0) AS SevenDayPreviousRunningTotal
FROM   data
WHERE  startdatetime IS NOT NULL
       AND enddatetime IS NOT NULL  

如果条件与您的要求不符,我将更新我的答案。在这种情况下,请使用更多详细信息更新问题。

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