请教用下面的语句取出来的值,能不能按照求和后的sum_eval的值来进行排序?select sum(sum_eval),s_i_code1,s_i_name1 from TMP_REP_3 t
where ROWNUM<3
group by s_i_code1,s_i_name1 执行后的结果如下:
sum(sum_eval) s_i_code1 s_i_name1
24637023.34   801070    机械设备
15002968.82   801200    商业贸易
5712000       801100    信息设备

解决方案 »

  1.   

    select * from 
    (
    select sum(sum_eval) as sum_eval,s_i_code1,s_i_name1 from TMP_REP_3 t
    group by s_i_code1,s_i_name1  
    order by sum(sum_eval)
    )
    where rownum<3
      

  2.   


    select sum(sum_eval),s_i_code1,s_i_name1 from TMP_REP_3 t
    where ROWNUM<3
    group by s_i_code1,s_i_name1  
    order by sum(sum_eval) desc
      

  3.   

    貌似是个bug
    ORA-00935: group function is nested too deeply 
    Cause: This is an internal error message not usually issued. 
    Action: Contact Oracle Support Services.  写成
    select * from  
    (
    select sum(sum_eval) as sum_eval,s_i_code1,s_i_name1 from TMP_REP_3 t
    group by s_i_code1,s_i_name1   
    order by 1
    )
    where rownum<3

    with tt as(
      select sum(sum_eval) as sum_eval,s_i_code1,s_i_name1 from TMP_REP_3 t
      group by s_i_code1,s_i_name1   
      order by sum_eval
    )
    select * from tt where rownum<3
    试试