2016-06-21 38 views
-1

我已經建立查詢來設置分區並使用row_number這裏的問題是我錯過了某些person_id記錄,但是當我使用where條件我能夠獲取記錄。當在分區上使用row_number但在使用where條件時能夠找到它們時缺少personid或字段

`SELECT C.* FROM 
(SELECT 
B.PROVIDER_PAU_DK AS PROVIDER_PAU_DK, 
B.PERSON_ID AS PERSON_ID, 
B.POS_BEGIN_DATE AS POS_BEGIN_DATE, 
B.POS_END_DATE AS POS_END_DATE, 
ROW_NUMBER() OVER (PARTITION BY POS_END_DATE) AS ENDDATE 
FROM 
(SELECT 
A.PROVIDER_PAU_DK AS PROVIDER_PAU_DK, 
A.PERSON_ID AS PERSON_ID, 
A.POS_BEGIN_DATE AS POS_BEGIN_DATE, 
A.POS_END_DATE AS POS_END_DATE 
FROM 
(SELECT 
PROVIDER_PAU_DK, 
PERSON_ID, 
ROW_NUMBER() OVER (PARTITION BY  PERSON_ID,POS_BEGIN_DATE,POS_END_DATE) AS RN, 
--ROW_NUMBER() OVER (PARTITION BY PERSON_ID,POS_END_DATE) AS RN1, 
POS_BEGIN_DATE, 
POS_END_DATE 
FROM CCR_EDTWH.DIM_PROVIDER_PAU 
WHERE PERSON_ID in (16198964) 
ORDER BY PERSON_ID)A 
WHERE A.RN=1) B)C 
WHERE C.ENDDATE IN (1,2) 
--and person_id=16198964` 

回答

0

你的分區了POS_END_DATE,然後過濾結果,只包括與結束日期1和2這意味着,如果你爲person_id恰好是某個字段將被過濾掉數3行。但是,如果您專門篩選要查找的記錄,則它將成爲查詢中唯一的記錄,並獲得一個較小的行號,從而顯示出來。

爲了您的測試,我將刪除row_number列上的過濾器,以查看它們的值。

相關問題