У меня есть таблица рекордов с созданной датой в них. Я хотел бы вернуть новые записи за каждый из последних 6 календарных месяцев, включая частичные в этом месяце. Я хорошо знаю SQL Server, но не так хорошо знаком с PostgreSQL.
Мне удалось получить данные за скользящие месяцы по этому запросу:
select
COUNT(ID) as Total,
COUNT(CASE WHEN createddate between (now() - '1 month'::interval)::timestamp AND now() THEN AG.ID END) as ThisMonth,
COUNT(CASE WHEN createddate between (now() - '2 month'::interval)::timestamp AND (now() - '1 month'::interval)::timestamp THEN AG.ID END) as LastMonth,
COUNT(CASE WHEN createddate between (now() - '3 month'::interval)::timestamp AND (now() - '2 month'::interval)::timestamp THEN AG.ID END) as PrevMonth,
COUNT(CASE WHEN createddate between (now() - '4 month'::interval)::timestamp AND (now() - '3 month'::interval)::timestamp THEN AG.ID END) as PrevMonth2,
COUNT(CASE WHEN createddate between (now() - '5 month'::interval)::timestamp AND (now() - '4 month'::interval)::timestamp THEN AG.ID END) as PrevMonth3,
COUNT(CASE WHEN createddate between (now() - '6 month'::interval)::timestamp AND (now() - '5 month'::interval)::timestamp THEN AG.ID END) as PrevMonth4
FROM a_group AG
Но 6/21 вернутся данные 5/22-6 / 21, 4 / 22-5 / 21 и т. Д.
Я хотел бы, чтобы данные складывались следующим образом: 6 / 1-6 / 21 (частичный текущий месяц), 5 / 1-5 / 31 и т. Д.
Есть предложения? Я также подозреваю, что мог бы сделать это в цикле, но еще недостаточно знаком с синтаксисом. На данный момент я тестирую это из PostgreSQL Maestro для резервного файла.
Спасибо.