2010-12-20 21 views
14

Cuando aplico un rango de fechas a mi consulta, ¿hay alguna forma de mostrar las fechas utilizadas en el intervalo de fechas incluso si no hay datos en esas fechas?Intervalo de fechas en PostgreSQL

Supongamos que yo uso,

... where date between '1/12/2010' and '31/12/2010' order by date 

lo que quiero en mi resultado es mostrar suma de todas las columnas cantidad hasta el 1/12/2010 en ese día, incluso si no hay datos para esa fecha y también mismo para el 31/12/2010.

Respuesta

26

Únete a generate_series() para cubrir los espacios vacíos.

Ejemplo:

CREATE TEMP TABLE foo AS SELECT CURRENT_DATE AS today; 
SELECT 
    COUNT(foo.*), 
    generate_series::date 
FROM 
    foo 
     RIGHT JOIN generate_series('2010-12-18', '2010-12-25', interval '1 day') ON generate_series = today 
GROUP BY 
    generate_series; 

Resultado:

0,'2010-12-18' 
0,'2010-12-19' 
1,'2010-12-20' 
0,'2010-12-21' 
0,'2010-12-22' 
0,'2010-12-23' 
0,'2010-12-24' 
0,'2010-12-25' 
Cuestiones relacionadas