запрос, чтобы получить данные за прошлые годы, отсутствующие данные c - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть запрос на получение данных за предыдущие годы, например

vsqlstr := 'select name, enrollement_dt,case_name, dept, city, state, zip from enrollement where ';
    vsqlstr :=vsqlstr ||' enrollement_dt <= to_date(''12''||(EXTRACT(YEAR FROM SYSDATE)-1), ''MMYYYY'')  ';

В БД есть следующие. записи:

Name Enrollement_Dt Case_name dept city state zip
ABS  2019-AUG-16    TGH       ENG   NY   NY    46378   
BCD  2019-DEC-31    THG       SCI   VA   VA    76534
EFG  2019-DEC-31    TGY       HIS   WA   WA    96534 
HIJ  2019-DEC-31    YUI       MATH  PA   PA    56534
KLM  2020-JAN-12    RET       MATH  TN   TN    56453

Приведенный выше запрос возвращает первую запись с датой регистрации '2019-AUG-16', но не другие записи. Я хочу получить все записи с 2019 года.

1 Ответ

2 голосов
/ 30 апреля 2020

Ваша проблема в том, что

to_date('12'||(EXTRACT(YEAR FROM SYSDATE)-1), 'MMYYYY')

возвращает (по состоянию на 2020 г.) 2019-12-01, когда вам нужно 2019-12-31. Вы можете обойти это, указав дату:

to_date('3112'||(EXTRACT(YEAR FROM SYSDATE)-1), 'DDMMYYYY')

Демонстрация на dbfiddle

Другой альтернативой будет использование TRUNC для получения первого дня. этого года, а затем вычтите 1:

enrollement_dt <= TRUNC(SYSDATE, 'YEAR') - 1

или еще проще

enrollement_dt < TRUNC(SYSDATE, 'YEAR')

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...