t sql сумма столбцов в диапазоне дат - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть таблица с четырьмя столбцами, относящимися к этому вопросу: EventID (int, null), StartDateTime (datetime, null), EndDateTime (datetime, null), DurationInMinutes (int, null)

Я хочу написать запрос, который выберет дополнительный столбец с суммой общей продолжительности событий, которые произошли в течение 7 последовательных дней, предшествующих событию, и я не знаю, как лучше всего это сделать. Прямо сейчас я думаю о каком-то СУММЕ заявления о ситуации или LAG, но я не могу понять, как это написать. Я надеюсь избежать всего, что будет нуждаться в cte, хотя бы потому, что в моем запросе уже слишком много таких запросов. Пожалуйста, помогите?

1 Ответ

0 голосов
/ 29 февраля 2020

Есть несколько предположений, сделанных при публикации этого ответа. Допущения:

  1. Сумма, чтобы включить записи, даже если eventid равен нулю
  2. Сумма, не включающая записи, где startdatetime равно нулю
  3. Сумма, не включающая записи, где enddatetime равно null
  4. Будут ли перекрывающиеся записи с одинаковым идентификатором события? (Это не считается)
  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  

Я бы обновил свой ответ, если условия не соответствуют вашим требованиям , В этом случае, пожалуйста, обновите вопрос с более подробной информацией.

...