2010-12-20 36 views
14

クエリに日付範囲を適用すると、その日付のデータがなくても、日付範囲で使用された日付が表示されますか?その日も同じのためのデータがない場合でもPostgreSQLの日付範囲

私が使用すると仮定は、

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

私は私の結果に欲しいのはその日の2010年1月12日まで、すべての量の列の合計を表示することです2010年12月31日

答えて

26

generate_series()に参加して、ギャップを埋める。

例:

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; 

結果:

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'