2016-06-21 9 views
-1

У меня есть запрос для установки разделов и используется row_number проблема здесь, я упускаю некоторые записи person_id, но когда Я использую условие, в котором я могу извлечь запись.Отсутствует personid или поля при использовании row_number над разделом, но в состоянии найти их при использовании условия

`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, а затем отфильтровать результаты, чтобы включить только строки с EndDate 1 и 2. Это означает, что если ваш person_id случается номер 3 для конкретной области будет отфильтрован. Однако, если вы специально фильтруете запись, которую ищете, она будет единственной в запросе и получит меньший номер строки, который заставит ее отобразиться.

Для вашего тестирования я бы удалил фильтр в столбцах row_number, чтобы узнать, каково их значение.

 Смежные вопросы

  • Нет связанных вопросов^_^