PostgreSQL usa valor da linha anterior se estiver faltando

Eu tenho uma consulta a seguir:

WITH t as (
  SELECT date_trunc('hour', time_series) as trunc 
  FROM generate_series('2013-02-27 22:00'::timestamp, '2013-02-28 2:00', 
                       '1 hour') as time_series
  GROUP BY trunc
  ORDER BY trunc
)
SELECT DISTINCT ON(trunc) trunc, id
FROM t
LEFT JOIN (
   SELECT id, created, date_trunc('hour', created) as trunc_u
   FROM event
   ORDER BY created DESC
) u
ON trunc = trunc_u

que produz o seguinte resultado:

"2013-02-27 22:00:00";
"2013-02-27 23:00:00";2
"2013-02-28 00:00:00";5
"2013-02-28 01:00:00";
"2013-02-28 02:00:00";

Mesaevent temid, created e algumas outras colunas, mas apenas aquelas são relevantes aqui. A consulta acima me dáid do último evento gerado por dadotrunc período de tempo (graças aDISTINCT ON Eu recebo uma boa agregação por período).

Agora, essa consulta geraNULL se nenhum evento aconteceu em determinado período de tempo. Eu gostaria que retornasse o anterior disponívelid, mesmo que seja de um período de tempo diferente. Ou seja:

"2013-02-27 22:00:00";0
"2013-02-27 23:00:00";2
"2013-02-28 00:00:00";5
"2013-02-28 01:00:00";5
"2013-02-28 02:00:00";5

Tenho certeza de que estou perdendo uma maneira fácil de conseguir isso. Algum conselho?

questionAnswers(2)

yourAnswerToTheQuestion