Суммируйте данные за последние 12 месяцев, когда нет данных за несколько месяцев между - PullRequest
0 голосов
/ 27 февраля 2020

Попытка суммировать данные за последние 12 месяцев, но есть несколько месяцев без данных, поэтому название месяца полностью отсутствует в наборе данных:

Как рассчитать данные за последние 12 месяцев между январем 2019 года и январь 2020 г. с учетом данных о пропущенных месяцах как 0?

enter image description here

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

На SQL сервере вы можете использовать apply:

select t.*, t2.total1
from t outer apply
     (select sum(t2.total) as total1
      from t t2
      where t2.date <= t.date and
            t2.date > dateadd(month, -12, t.date)
     ) t2;

Поскольку ваш столбец даты не работает, вы можете вместо этого использовать:

select t.*, t2.total1
from t outer apply
     (select sum(t2.total) as total1
      from t t2
      where t2.year * 12 + t2.month <= t.year * 12 + t.month and
            t2.year * 12 + t2.month > t.year * 12 + t.month - 12
     ) t2;
0 голосов
/ 27 февраля 2020

Вы можете использовать функцию DATEFROMPARTS для преобразования месяца и года в дату:

select sum(total1) as total
from table
where datefromparts(year,month,1) between '01Jan2019' and '01Jan2020'

Если вы хотите получить динамический результат c за последние 12 месяцев, тогда:

select sum(total1) as total
from table
where datefromparts(year,month,1) between DATEADD(month,-13,GETDATE()) and GETDATE()

Надеюсь, это поможет.

...