2010-12-20 19 views
14

Gdy zastosuję zakres dat do mojego zapytania, czy mimo to wyświetlają się daty używane w zakresie dat, nawet jeśli w tych datach nie ma danych?Zakres dat w PostgreSQL

Załóżmy używam,

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

Co chcę w moim wyniku jest pokazanie sumę wszystkich kolumnie kwota aż 1/12/2010 tego dnia, nawet jeśli nie ma żadnych danych na ten dzień, a także same na 31.12.2010.

Odpowiedz

26

Połącz z generate_series(), aby wypełnić luki.

przykład:

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; 

Wynik:

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' 
Powiązane problemy