Где пункт, который выводит первое число каждого месяца за прошедший год - PullRequest
0 голосов
/ 22 мая 2018

Я извлекаю данные из базы данных, и мне нужен первый день каждого месяца за последний год.Это для отчета, который будет запускаться каждый месяц, поэтому я не хочу создавать массив, а затем обновлять этот массив каждый месяц.Пока он у меня там, где он выводит первое число этого месяца:

SELECT
SCART.STA_FRAME_STAT.ARRAY,
SCART.STA_FRAME_STAT.S_DATE

FROM
SCART.STA_FRAME_STAT

WHERE
(SCART.STA_FRAME_STAT.S_DATE) = (trunc(sysdate) - (to_number(to_char(sysdate,'DD')) -1 ))

, где его вывод показывает:

Array    S_DATE
1        5/1/2018
2        5/1/2018
.        .
.        .
.        .

Любое руководство о том, как я мог получить это обратнос 1 по 5 мая с выводом только первого числа месяца, так что я могу уменьшить размер, будет принята с благодарностью.Кстати, я работаю в TOAD.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вот способ сделать это с помощью рекурсивного предложения with.Это будет производить первый день каждого месяца, начиная с 12 месяцев текущего месяца.

with dates(r) as
(select 0 r from dual
 union all
 select r+1 from dates
 where r < 12)

select r,
       trunc(add_months(sysdate,-1*r), 'MM') S_DATE
from dates

Мой вывод:

r   S_DATE
0   01-MAY-18
1   01-APR-18
2   01-MAR-18
3   01-FEB-18
4   01-JAN-18
5   01-DEC-17
6   01-NOV-17
7   01-OCT-17
8   01-SEP-17
9   01-AUG-17
10  01-JUL-17
11  01-JUN-17
12  01-MAY-17
0 голосов
/ 22 мая 2018

Я работал над вопросом по-другому.Вот решение, если кому-нибудь когда-нибудь понадобится помощь с этим:

SELECT
SCART.STA_FRAME_STAT.ARRAY,
SCART.STA_FRAME_STAT.S_DATE


FROM
SCART.STA_FRAME_STAT

WHERE
to_char(SCART.STA_FRAME_STAT.S_DATE,'DD') = 01
AND 
to_char(SCART.STA_FRAME_STAT.S_DATE,'YYYY') >= 2017
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...