Rank () более (раздел оракулом, возвращающим 1 запись - PullRequest
0 голосов
/ 29 августа 2018

У меня есть требование поднять названия должностей, на которые был принят каждый кандидат, потому что есть случаи, когда кандидат может быть принят на работу, а затем его отменили, я использую функцию ранга, чтобы убедиться, что я выберу только финал Работа, на которую мы наняли кого-то. Проблема в том, что мой запрос возвращает только одну запись, когда я уверен, что у меня более одной записи. Вот мой код оракула, который я использую.

SELECT E.PI_CANDIDATE_NUM,
       J.TITLE,
       RANK() OVER(PARTITION BY E.PI_CANDIDATE_NUM
          ORDER BY E.PI_HIS_ITM_APP_TRK_CREATION_DT DESC) AS ROWRANK
  FROM WC_HIRED_INTERNS_FA H
       INNER JOIN WC_APPLICATION_EVENT_F E
        ON H.PI_CANDIDATE_NUM = E.PI_CANDIDATE_NUM
       INNER JOIN WC_JOB_INFORMATION_D J
        ON E.JOB_INFO_ROW_WID = J.ROW_WID
 WHERE     ROWNUM = 1
       AND J.JOB_FAMILY_NAME IN ('M', 'P', 'E', 'O')
       AND E.PI_HIS_ITM_APP_TRK_STS_NAME = 'Extended'
       AND E.PI_HIS_ITM_APP_TRK_STEP_NAME = 'Offer'
       AND J.TITLE NOT IN ('Student Ambassador');

1 Ответ

0 голосов
/ 29 августа 2018

Вам, кажется, нужно:

SELECT *
FROM 
(
    SELECT E.PI_CANDIDATE_NUM,
           J.TITLE,
           RANK() OVER(PARTITION BY E.PI_CANDIDATE_NUM
              ORDER BY E.PI_HIS_ITM_APP_TRK_CREATION_DT DESC) AS ROWRANK
      FROM WC_HIRED_INTERNS_FA H
           INNER JOIN WC_APPLICATION_EVENT_F E
            ON H.PI_CANDIDATE_NUM = E.PI_CANDIDATE_NUM
           INNER JOIN WC_JOB_INFORMATION_D J
            ON E.JOB_INFO_ROW_WID = J.ROW_WID
     WHERE  -- no conditions on ROWNUM
               J.JOB_FAMILY_NAME IN ('M', 'P', 'E', 'O')
           AND E.PI_HIS_ITM_APP_TRK_STS_NAME = 'Extended'
           AND E.PI_HIS_ITM_APP_TRK_STEP_NAME = 'Offer'
           AND J.TITLE NOT IN ('Student Ambassador')
)
WHERE ROWRANK = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...