Sql Rank()超过(oracle返回1条记录的分区)

Sql Rank()超过(oracle返回1条记录的分区),sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我需要调出每个应聘者被录用的职位名称,因为在某些情况下,应聘者可以被录用,然后被取消录用。我使用秩函数来确保我只选择我们雇佣的最后一份工作。问题是,当我确定我有多个r时,我的查询只返回一条记录这是我正在使用的oracle代码 SELECT E.PI_CANDIDATE_NUM, J.TITLE, RANK() OVER(PARTITION BY E.PI_CANDIDATE_NUM ORDER BY E.PI_HIS_ITM_APP_TRK_CRE

我需要调出每个应聘者被录用的职位名称,因为在某些情况下,应聘者可以被录用,然后被取消录用。我使用秩函数来确保我只选择我们雇佣的最后一份工作。问题是,当我确定我有多个r时,我的查询只返回一条记录这是我正在使用的oracle代码

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');
您似乎需要:

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
您似乎需要:

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

可能是
ROWNUM=1
?这与
rank()无关
。返回的行数由连接条件和
where
子句决定。在外部查询中,rownum更可能需要是where rowrank=1 ok。我没有意识到,我以为问题是rowrankMaybe
rownum=1
?这与
rank()无关
。返回的行数由连接条件和
where
子句决定。在外部查询中,rownum更可能是where rowrank=1。好的。我没有意识到,我认为这个问题非常好,解决了我的问题。非常感谢。非常好,解决了我的问题。c谢谢你。