我的 PG 数据库中有一张表,看起来有点像这样:
id | widget_id | for_date | score |
每个引用的小部件都有很多这些项目。每个小部件每天 1 个,但存在差距。
我想要得到的是一个结果,其中包含自 X 以来每个日期的所有小部件。日期是通过生成系列引入的:
SELECT date.date::date
FROM generate_series('2012-01-01'::timestamp with time zone,'now'::text::date::timestamp with time zone, '1 day') date(date)
ORDER BY date.date DESC;
如果给定的 widget_id 没有日期条目,我想使用前一个。所以说小部件 1337 在 2012-05-10 上没有条目,但在 2012-05-08 上没有条目,那么我希望结果集也显示 2012-05-10 上的 2012-05-08 条目:
Actual data:
widget_id | for_date | score
1312 | 2012-05-07 | 20
1337 | 2012-05-07 | 12
1337 | 2012-05-08 | 41
1337 | 2012-05-11 | 500
Desired output based on generate series:
widget_id | for_date | score
1336 | 2012-05-07 | 20
1337 | 2012-05-07 | 12
1336 | 2012-05-08 | 20
1337 | 2012-05-08 | 41
1336 | 2012-05-09 | 20
1337 | 2012-05-09 | 41
1336 | 2012-05-10 | 20
1337 | 2012-05-10 | 41
1336 | 2012-05-11 | 20
1337 | 2012-05-11 | 500
最终我想把它归结为一个视图,这样我每天就有一致的数据集,我可以很容易地查询。
编辑:使示例数据和预期结果集更清晰