当我对查询应用日期范围时,是否有办法显示在这些日期中使用的日期,即使在这些日期没有数据?
假设我使用,
... where date between '1/12/2010' and '31/12/2010' order by date
我希望我的结果显示截至2010年1月12日的所有金额总和,即使那一天没有数据,同样适用于2010年12月31日。
当我对查询应用日期范围时,是否有办法显示在这些日期中使用的日期,即使在这些日期没有数据?
假设我使用,
... where date between '1/12/2010' and '31/12/2010' order by date
我希望我的结果显示截至2010年1月12日的所有金额总和,即使那一天没有数据,同样适用于2010年12月31日。
使用generate_series()函数连接以填充空缺。
示例:
CREATE TEMP TABLE foo AS SELECT CURRENT_DATE AS today;
SELECT
COUNT(foo.*),
generate_series::date
FROM
foo
RIGHT JOIN generate_series('2010-12-18', '2010-12-25', interval '1 day') ON generate_series = today
GROUP BY
generate_series;
结果:
0,'2010-12-18'
0,'2010-12-19'
1,'2010-12-20'
0,'2010-12-21'
0,'2010-12-22'
0,'2010-12-23'
0,'2010-12-24'
0,'2010-12-25'