【问题标题】:tsql sum of columns within date rangetsql 日期范围内的列总和
【发布时间】:2020-06-12 21:19:36
【问题描述】:

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

我想编写一个查询,该查询将选择一个附加列,其中包含事件前连续 7 天内发生的事件总持续时间的总和,但我不知道如何最好地做到这一点。现在我正在考虑某种案例陈述或 LAG 的总和,但我不知道如何写。我希望避免任何需要 cte 的事情,如果只是因为我的查询已经有太多的问题。请帮忙?

【问题讨论】:

  • 请向我们展示样本数据和期望的结果,否则您的问题不够具体。

标签: tsql sum date-range


【解决方案1】:

发布此答案时做出了一些假设。 假设:

  1. 即使 eventid 为空,也要包含记录的总和
  2. 总和不包括 startdatetime 为空的记录
  3. 总和不包括 enddatetime 为空的记录
  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  

如果条件不符合您的要求,我会更新我的答案。 在这种情况下,请更新问题并提供更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2014-01-07
    相关资源
    最近更新 更多