2016-09-29 54 views
-2

我試圖運行一個SQL查詢,該查詢將取我所有人員 1.只有員工 2.員工和銷售人員以及 3.只有銷售人員。 我正在開發Oracle電子商務套件。到目前爲止,我的查詢僅返回那些僅僅是員工的人員​​以及那些員工和銷售人員。以下是我到目前爲止管理:需要幫助只查找SQL中的員工和銷售人員

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的行。我究竟做錯了什麼?

+3

您好!請閱讀[如何編寫最小的完整示例](http://stackoverflow.com/help/mcve),並儘可能簡化您的示例。另外,如果你的表結構能夠理解你想要達到的目標,那將是非常好的。 – brclz

+0

@brclz我很抱歉。我應該只發布必要的細節。 –

回答

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

或者可能只是刪除該子句?

+0

我刪除了該條款。你能再看看這個嗎? –

+0

您刪除了該條款....發生了什麼?沒有?它有用嗎?以上是關於我所能提供的有限信息。您最好重新閱讀您的原始文章的第一條評論。 –

+0

刪除條款後,我現在可以找到既是員工又是銷售人員的人員。我仍然需要讓那些既是員工又是銷售人員的員工只有員工。 –