Postgresql 获取一年中的所有月份和空值

vid*_*ngs -1 sql postgresql null

我正在尝试在 PostgreSQL 中进行查询,它应该为我提供一年中的所有月份,按月排序。还有null销售列为空的月份的值。但是我无法显示所有月份,也null根本没有任何值。请帮忙?

这是我的查询:

SELECT
    to_char(date_trunc('Month', dateofmonth), 'Month') MON,
    sum(sales) SALES
FROM SALES_TABLE
GROUP BY MON;
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

您可以使用它generate_series()来生成一年的月份。然后您可以使用 加入聚合中的值left join。像这样的东西:

select mon.mon, coalesce(s.sales, 0) as sales
from generate_series('2015-01-01'::timestamp, '2015-12-01'::timestamp, interval '1 month'
                    ) as mon(mon) left join
     (select date_trunc('Month', dateofmonth) as mon,
             sum(sales) as SALES
      from  SALES_TABLE
      group by mon
    ) s
    on mon.mon = s.mon;
Run Code Online (Sandbox Code Playgroud)