Нужна помощь в поиске только сотрудников и продавцов в SQL

Я пытаюсь выполнить SQL-запрос, который бы собрал всех, кто: 1. Только сотрудники, 2. Сотрудники и продавец и 3. Только продавцы. Я работаю над Oracle E-Business Suite. Пока что мой запрос возвращает только тех людей, которые являются только работниками, и тех людей, которые являются работниками, а также продавцами. Вот что мне удалось до сих пор:

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. Что я делаю неправильно?

1 ответ

Уверен, ваша проблема лежит здесь:

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

Или, может быть, просто удалить это предложение?

Другие вопросы по тегам