SQL запрос для выбора всех активных сотрудников и уволенных сотрудников только в течение указанного c периода - PullRequest
0 голосов
/ 29 мая 2020

Я написал запрос для получения как активных, так и неактивных сотрудников из таблицы-

select papf.name,papf.empl_id,papf.assignment_status_type
from per_all_people_f papf,
per_periods_of_service ppos
where papf.person_id = ppos.person_id
AND (ppos.ACTUAL_TERMINATION_DATE is null or trunc(ACTUAL_TERMINATION_DATE) BETWEEN TO_CHAR (:from_date,
'YYYY-MM-DD') AND TO_CHAR (:TO_DATE, 'YYYY-MM-DD'))
AND ASSIGNMENT_STATUS <> 'Terminated - No Payroll'

Этот запрос будет извлекать все АКТИВНЫЕ и НЕАКТИВНЫЕ назначения (разрешенные для расчета заработной платы). Я хочу, чтобы статус приемлемого назначения неактивные назначения / прекращено-Payroll извлекался только для прошедшей даты, то есть: from_date и: to_date вместе со всеми АКТИВНЫМИ назначениями.

Я добавил условие, которое actual_termination_date is between these dates to pick the Terminated-Payroll имеет право или это null для активных назначений, но этот запрос получает право на прекращение платежа, даже если фактическая_дата_терминации не совпадает с этими датами.

Просто для добавления разрешенного прекращения платежа соответствует INACTIVE IN papf.assignment_status_type

1 Ответ

0 голосов
/ 29 мая 2020

Вы используете TO_CHAR (:from_date,'YYYY-MM-DD'), вам не нужно преобразовывать его в CHAR, поскольку вы сравниваете его с датой. (как :from_date, так и :to_date)

Если :from_date - это дата, просто используйте :from_date, а если :from_date - это строка, преобразуйте ее в дату, а затем используйте как to_date(:from_date,'YYYY-MM-DD') - относится к :to_date также

...