PostgreSQL usa el valor de la fila anterior si falta

Tengo una consulta siguiente:

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 da el siguiente 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 tieneid, created y algunas otras columnas, pero solo esas son relevantes aquí. La consulta anterior me daid del último evento generado por dadotrunc período de tiempo (gracias aDISTINCT ON Obtengo una buena agregación por periodo).

Ahora, esta consulta cedeNULL Si no ocurrieron eventos en un período de tiempo dado. Me gustaría que devolviera el anterior disponible.id, incluso si es de diferente período de tiempo. Es decir.:

"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

Estoy seguro de que me estoy perdiendo alguna forma fácil de lograr esto. ¿Algún consejo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta