2017-02-22 69 views
0

我使用ROWNUM爲以下方式獲取999行:ROWNUM不工作的左外連接

SELECT COUNT(*) 
FROM PS_MMC_JOBDSSOA_MV JOB, PS_MMC_PERDSSOA_MV PER 
WHERE PER.EMPLID = JOB.EMPLID AND 
PER.ASOFDATE = (SELECT MAX(PER1.ASOFDATE) FROM PS_MMC_PERDSSOA_MV PER1 
WHERE PER1.EMPLID = PER.EMPLID AND PER1.ASOFDATE <= SYSDATE) AND 
JOB.ASOFDATE = (SELECT MAX(JOB1.ASOFDATE) FROM PS_MMC_JOBDSSOA_MV JOB1 
WHERE JOB1.EMPLID = JOB.EMPLID AND JOB1.ASOFDATE <=SYSDATE) AND ROWNUM<1000; 

我已經重新使用左外寫了上面的SQL查詢聯接:

SELECT COUNT(*) 
FROM PS_MMC_JOBDSSOA_MV JOB LEFT OUTER JOIN PS_MMC_PERDSSOA_MV PER 
ON (PER.EMPLID = JOB.EMPLID) 
AND PER.ASOFDATE = ((SELECT MAX(PER1.ASOFDATE) FROM PS_MMC_PERDSSOA_MV PER1 WHERE 
PER1.EMPLID = PER.EMPLID AND PER1.ASOFDATE <= SYSDATE) 
AND JOB.ASOFDATE = (SELECT MAX(JOB1.ASOFDATE) FROM PS_MMC_JOBDSSOA_MV JOB1 WHERE 
JOB1.EMPLID = JOB.EMPLID AND JOB1.ASOFDATE <= SYSDATE)) WHERE ROWNUM <1000; 

ROWNUM不與外連接一起工作。我得到了超過1000行。

有人可以建議我做錯了什麼。

回答

0

我發現這下面的SQL查詢這正與ROWNUM

SELECT * from (SELECT JOB.DEPTID, JOB.EMPL_STATUS, JOB.LOCATION, JOB.MMC_LOCATION_DESCR, JOB.CITY, JOB."STATE", PER."NAME" FROM 
PS_MMC_JOBDSSOA_MV JOB LEFT OUTER JOIN PS_MMC_PERDSSOA_MV PER ON (PER.EMPLID = JOB.EMPLID) 
AND PER.ASOFDATE = (SELECT MAX(PER1.ASOFDATE) FROM PS_MMC_PERDSSOA_MV PER1 
WHERE PER1.EMPLID = PER.EMPLID AND PER1.ASOFDATE <= SYSDATE) AND JOB.ASOFDATE = 
(SELECT MAX(JOB1.ASOFDATE) FROM PS_MMC_JOBDSSOA_MV JOB1 WHERE JOB1.EMPLID = JOB.EMPLID AND JOB1.ASOFDATE <= SYSDATE)) 
where ROWNUM <1000