需要帮助只查找SQL中的员工和销售人员

时间:2016-09-29 07:23:53

标签: sql oracle oracle-ebs

我正在尝试运行一个SQL查询,它会向我提取所有人 1.只有员工, 2.员工和销售人员 3.只有销售人员。 我正在开发Oracle电子商务套件。到目前为止,我的查询仅返回那些仅限员工的人员​​以及那些员工和销售人员。以下是我迄今为止所做的事情:

select distinct PAF.LAST_NAME,
  PAF.START_DATE "HIRE_DATE",
  PAF.EMPLOYEE_NUMBER,
  PPT.SYSTEM_PERSON_TYPE "PERSON_TYPE",
  JRS.SALES_CREDIT_TYPE_ID,
  JRS.SALESREP_NUMBER
from PER_ALL_PEOPLE_F PAF,
  PER_PERSON_TYPES PPT,
  PER_PERSON_TYPE_USAGES_F PPTU,
  JTF_RS_DEFRESOURCES_VL JRDV,
  JTF_RS_SALESREPS JRS
where PAF.PERSON_ID          = PPTU.PERSON_ID                
and PPTU.PERSON_TYPE_ID      = PPT.PERSON_TYPE_ID             
and PPT.SYSTEM_PERSON_TYPE  in ('EMP','OTHER')
and JRDV.category           in ('EMPLOYEE','OTHER')
and (JRS.SALESREP_NUMBER(+) = PAF.EMPLOYEE_NUMBER)
and sysdate between PAF.EFFECTIVE_START_DATE and PAF.EFFECTIVE_END_DATE;

This is what I want to achieve

我必须包括那些只是销售人员的人。基本上,应该有一些行没有Employee_Number但只有SALESREP_NUMBER。我做错了什么?

1 个答案:

答案 0 :(得分:0)

非常确定你的问题在于:

AND PAF.EMPLOYEE_NUMBER      = JRS.SALESREP_NUMBER

就像上面的评论所说,你没有提供太多信息。但是,一个有根据的猜测是,上面指出的等同性会使那个人成为一个雇员和一个销售人员。也许更像是:

AND (
    PAF.EMPLOYEE_NUMBER      = JRS.SALESREP_NUMBER
    OR
    ( PAF.EMPLOYEE_NUMBER AND JRS.SALESREP_NUMBER IS NULL)
    OR
    ( PAF.EMPLOYEE_NUMBER IS NULL AND JRS.SALESREP_NUMBER)
)

或者只是删除该条款?