В Oracle, используя КТР,
WITH table_ (TDATE, OPEN, Closed) AS (
SELECT to_date('19/05/15', 'dd/mm/yy'), 1, 1 from dual UNION ALL
SELECT to_date('20/05/15', 'dd/mm/yy'), 0, 1 from dual UNION ALL
SELECT to_date('26/05/15', 'dd/mm/yy'), 2, 0 from dual UNION ALL
SELECT to_date('27/05/15', 'dd/mm/yy'), 1, 0 from dual UNION ALL
SELECT to_date('28/05/15', 'dd/mm/yy'), 2, 0 from dual),
--------------
-- End of data preparation
--------------
arr_table as (
select to_date('19/05/15', 'dd/mm/yy') + level - 1 dummy_date
from dual
connect by ROWNUM < = to_date('28/05/15', 'dd/mm/yy') - to_date('19/05/15', 'dd/mm/yy') + 1)
SELECT a.dummy_date, COALESCE(b.open, 0) AS OPEN, COALESCE(b.closed, 0) AS closed
FROM arr_table a
LEFT OUTER JOIN table_ b
ON b.tdate = a.dummy_date
ORDER BY a.dummy_date;
Выход:
| DUMMY_DATE | OPEN | CLOSED |
|-----------------------|------|--------|
| May, 19 2015 00:00:00 | 1 | 1 |
| May, 20 2015 00:00:00 | 0 | 1 |
| May, 21 2015 00:00:00 | 0 | 0 |
| May, 22 2015 00:00:00 | 0 | 0 |
| May, 23 2015 00:00:00 | 0 | 0 |
| May, 24 2015 00:00:00 | 0 | 0 |
| May, 25 2015 00:00:00 | 0 | 0 |
| May, 26 2015 00:00:00 | 2 | 0 |
| May, 27 2015 00:00:00 | 1 | 0 |
| May, 28 2015 00:00:00 | 2 | 0 |
Так в основном, запрос будет:
with arr_table as (
select to_date(<start_date>, 'dd/mm/yy') + level - 1 dummy_date
from dual
connect by ROWNUM < = to_date(<end_date>, 'dd/mm/yy') - to_date(<start_date>, 'dd/mm/yy') + 1)
SELECT a.dummy_date, COALESCE(b.open, 0) AS OPEN, COALESCE(b.closed, 0) AS closed
FROM arr_table a
LEFT OUTER JOIN <your_table> b
ON b.tdate = a.dummy_date
ORDER BY a.dummy_date;
Вы должны налево присоединиться с календарным столом (или cte). SO полна примеров того, как это сделать, просто выполните поиск. Также, Добро пожаловать в stackoverflow. Пожалуйста, прочитайте [ask]. –