我希望从零星发生的事件日志中获取值,并在事件之间的所有日期扩展这些值。例如:
一个完整的系列可能看起来像......
2013-01-01
2013-01-02
2013-01-03
2013-01-04
2013-01-05
但是事件日志看起来像......
2013-01-01 | value_1
2013-01-04 | value_2
期望的最终结果如下...
2013-01-01 | value 1
2013-01-02 | value 1
2013-01-03 | value 1
2013-01-04 | value 2
2013-01-05 | value 2
作为解决方案,我正在尝试生成完整系列的日期,将选择性事件日志日期左连接到该完整系列,然后用所需的值填充 NULL 值,但我遇到了左连接的问题产生内部连接结果。
select
days.date,
e.value
from
--Generate table for dates
(select
row_number() over (),
generate_series::date as date
from
generate_series('2009-01-01',current_date + interval '100 days',interval '1 day')) days
--Combine actual change log
left join
(select
value,
event_date
from event_table
where type = 'desired_type') e
on days.date = e.event_date
我的结果集不是包含完整日期的 1669 行,而是只有几个 e.value,而是每个非 NULL days.date、e.value 组合只有一行。在视觉上,而不是...
2009-01-01 | value 1
2009-01-02 | NULL
2009-01-03 | NULL
2009-01-04 | value 2
2009-01-05 | NULL
...
...我越来越...
2009-01-01 | value 1
2009-01-04 | value 2
...
我希望这是一个内部连接,而不是从几天到 e 的左连接。