我在我的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
最终我希望将其归纳为一个视图,这样每天我都可以获得一致的数据集并轻松查询。
编辑:使示例数据和期望结果集更清晰。