У меня есть некоторые данные из таблиц Oracle, основанные на каком-то условии.
Если человек с JobFunctionCode = 'ADMIN', то, когда он уходит в отставку, заполняет уведомленное_termination_date, а затем его данные должны быть получены.
Человек из другого JobFunctionCode, такого как Manager, Finance и т. Д., Когда он подает в отставку, заполняет значение accept_termination_date, тогда его данные должны быть получены.
Поэтому, извлекая данные, основанные на этих условиях, я написал заявление о ситуации в своемWHERE
, но в нем отсутствует ошибка в скобках.Этот SQL-запрос запускается по расписанию, поэтому я установил даты завершения sysdate
, и он будет выполняться ежедневно.
select ppos.person_id, paam.position_id, pjf.job_function_code
from
per_all_assignments_m paam, per_periods_of_service ppos, per_jobs_f pjf
where
case
when pjf.job_function_code = 'ADMIN' then (TO_CHAR(ppos.notified_termination_date, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD'))
else (TO_CHAR(ppos.accepted_termination_date, 'YYYY-MM-DD') = TO_CHAR(SYSDATE, 'YYYY-MM-DD'))
end
and paam.person_id = ppos.person_id
and paam.job_id = pjf.job_id
and paam.primary_flag = 'Y'
and TO_CHAR(paam.effective_end_date, 'YYYY-MM-DD') = '4712-12-31'
and TO_CHAR(pjf.effective_end_date, 'YYYY-MM-DD') = '4712-12-31'
Также может быть условие, когда Person из обоих JobFunctionCode завершает работу, а затем обаличные данные должны быть извлечены, поэтому я не думаю, что в этом случае можно использовать выражение CASE
.
Пожалуйста, дайте мне знать, как написать логику здесь?