我正在尝试修改员工接口文件中使用的SELECT语句,因为它在通过员工时返回了一个错误,他们的END_DATE是......好'过时'。
我对此很陌生,所以为了跳过过时的Oracle用户,我觉得使用NVL表达式最好?然而,在研究之后,我只是没有把握这个概念,并且不确定它是否应该是我应该使用的。
以下是声明:
FROM oaa.xxap_employee_interim ei,
hr.per_all_people_f ppf,
hr.per_all_assignments_f paf,
hr.per_addresses pa,
apps.fnd_user u
WHERE new_update = 'U'
AND ppf.person_type_id = 6
AND ei.employee_number = ppf.employee_number
AND ppf.effective_end_date >= SYSDATE
AND ppf.person_id = paf.person_id
AND paf.effective_end_date >= SYSDATE
AND ppf.person_id = pa.person_id
AND u.employee_id = ppf.person_id
--AND NVL(u.end_date, SYSDATE + 5);
同事也建议我使用“IS NULL”在这种情况下不正确。真的吗?如果是这样,为什么?
提前致谢。
答案 0 :(得分:0)
我猜你想要检查u.end_date是过去的日期还是非日期。在这种情况下,我会使用以下内容:
AND COALESCE(u.end_date, SYSDATE) < SYSDATE
Oracle的具体方法是
AND NVL(u.end_date, SYSDATE) < SYSDATE