Mysql - получить совокупность данных за месяц и заполнить пропущенные месяцы - PullRequest
0 голосов
/ 09 апреля 2020

Это может показаться неоправданным вопросом, но я хочу провести некоторую агрегацию на основе дат за последние 6 месяцев на ежемесячной основе, что я могу хорошо выполнить с запросом sql. Но в дополнение к этому я хочу строки месяца, которые также не имеют данных without creating a date dimension table

Это выполнимый вопрос? Любые идеи?

PS: тот же вариант использования для дневных данных ..

1 Ответ

0 голосов
/ 09 апреля 2020

Вы можете просто жестко кодировать значения и использовать left join:

select ((curdate() - interval (1 - day(curdate()) day) - interval n month) as yyyymm,
       . . .
from (select 0 as n union all select 1 union all select 2 union all
      select 3 as n union all select 4 union all select 5
     ) n left join
     (<your query here>) q
     on q.yyyymm = (curdate() - interval (1 - day(curdate()) day) - interval n month
...