-2

我正在尝试运行一个 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;

这就是我想要实现的

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

4

1 回答 1

0

Pretty sure your issue lies here:

AND PAF.EMPLOYEE_NUMBER      = JRS.SALESREP_NUMBER

Like the comment above says, you don't give much info. But, an educated guess would be that the equivalence indicated above would make that person an employee AND a salesperson. Maybe something more like:

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)
)

Or maybe just delete that clause?

于 2016-09-29T08:06:16.193 回答