子查询返回多行而不是一行

时间:2018-03-06 13:12:52

标签: oracle

我有以下查询,该查询应该首先查看此列(MAX_TEST)以查看是否有分数,如果它没有分数则返回最新分数,然后查看此列( MAX__SCORE),在拿到最新分数后,我需要将其别名为(PSI分数)。第二个输出显示返回PSI得分 - 并且别名为PSI XMation。到目前为止,我能够获得PSI分数以返回值,但PSI Xmation无法正常工作,我收到一条错误消息,指出from关键字不在其应有的位置。最后一个问题是我得到的是多行而不是一行。

SELECT P_PI_NUM,
COALESCE(MAX_SCORE) AS PS

1 个答案:

答案 0 :(得分:0)

以下是获得每个父ID(标准SQL)最新得分的一种方法:

select 
  parent_pi_number,
  psi_score,
  (psi_score - 39.035024) / 8.439997 as psi_xmation
from
(
  select  
    parent_pi_number,
    coalesce(gco_ad_knowledge_test_score, psi_overall_score) as psi_score,
    row_number() over (partition by parent_pi_number
                       order by request_last_modified_dt desc) as rn
  from wc_application_event_f
  where pi_candidate_num = 69130
)
where rn = 1
order by parent_pi_number;

这是另一个(仅限Oracle):

select  
  parent_pi_number,
  max(coalesce(gco_ad_knowledge_test_score, psi_overall_score)) 
      keep (dense_rank last order by request_last_modified_dt) 
    as psi_score,
  (max(coalesce(gco_ad_knowledge_test_score, psi_overall_score)) 
       keep (dense_rank last order by request_last_modified_dt) - 39.035024) / 8.439997 
    as psi_xmation
from wc_application_event_f
where pi_candidate_num = 69130
group by parent_pi_number
order by parent_pi_number;

(我希望我的括号正确。)