Maly OT, ale gdyby ktos szukal dla Oracle to mozna to zrobic tak:
SELECT
g."date", NVL("value", 0)
FROM
-- (g) generator dat
(SELECT
CAST(:startdate AS DATE) + num - 1 "date"
FROM
(SELECT rownum num
FROM dual
CONNECT BY (rownum < CAST(:end AS DATE) - CAST(:startdate AS DATE) + 2)
)
) g
--
LEFT OUTER JOIN
-- (s) dane wejsciowe
(SELECT "date", "value" FROM
(SELECT TO_DATE('2003-01-01', 'YYYY-MM-DD') "date", 10 "value" FROM dual UNION
SELECT TO_DATE('2003-01-03', 'YYYY-MM-DD') "date", 5 "value" FROM dual)
) s ON (s."date" = g."date")
--
ORDER BY
g."date"
Przykladowe dane wejsciowe:
Date Values
2003-01-01 10
2003-01-03 5
Przykladowy wynik dla zakresu dat (2003-01-01 – 2003-01-05):
Date Values
2003-01-01 10
2003-01-02 0
2003-01-03 5
2003-01-04 0
2003-01-05 0