Создать представление с днями года - PullRequest
1 голос
/ 11 января 2012

Я построил view со следующим запросом.

SELECT TRUNC(sysdate - (365), 'YYYY') + (level-1) AS the_day
  FROM dual
    CONNECT BY level <= to_number(TO_CHAR(last_day(add_months(TRUNC(sysdate, 'YYYY'),11)), 'DDD'))

выше запроса возврата результата, как показано ниже.

THE_DAY
---------
01-JAN-11
02-JAN-11
03-JAN-11
04-JAN-11
05-JAN-11
06-JAN-11
07-JAN-11
08-JAN-11
09-JAN-11
10-JAN-11
11-JAN-11

...

20-DEC-11
21-DEC-11
22-DEC-11
23-DEC-11
24-DEC-11
25-DEC-11
26-DEC-11
27-DEC-11
28-DEC-11
29-DEC-11
30-DEC-11
31-DEC-11
01-JAN-12

Это January of 2012. поэтому мне нужно удалить все дни с 01-JAN-11 до 31-JAN-11 сверху вывода и добавить все дни с 01-JAN-12 до 31-JAN-12 для вывода.

как я могу это сделать? Как мне изменить мой запрос для получения результата, как показано ниже.

THE_DAY
---------
01-FEB-11
02-FEB-11
03-FEB-11
04-FEB-11
05-FEB-11
06-FEB-11
07-FEB-11
08-FEB-11
09-FEB-11
10-FEB-11
11-FEB-11

...

20-DEC-11
21-DEC-11
22-DEC-11
23-DEC-11
24-DEC-11
25-DEC-11

...

01-JAN-12
02-JAN-12
03-JAN-12
04-JAN-12
05-JAN-12
06-JAN-12
07-JAN-12
08-JAN-12
09-JAN-12
10-JAN-12
11-JAN-12
12-JAN-12
...
30-JAN-12
31-JAN-12

1 Ответ

2 голосов
/ 11 января 2012
SELECT add_months(TRUNC(sysdate - (365), 'YYYY'),to_number(to_char(sysdate,'mm'))) + (level - 1) AS the_day
  FROM dual
CONNECT BY level <=
           to_number(TO_CHAR(last_day(add_months(TRUNC(sysdate, 'YYYY'), 11)),
                             'DDD'))
...