请教一下,执行下面的语句查询后
select RID ,sum_eval,s_i_name1,s_i_code1 from TMP_REP_2 WHERE rownum<=5
union
select '前三名', sum_eval,s_i_name1,s_i_code1 FROM  TMP_REP_2 WHERE rownum<=3
union
select '前五名', sum_eval,s_i_name1,s_i_code1 FROM  TMP_REP_2 WHERE rownum<=5;输出的结果如下:
1 33060379.4 黑色金属 801040
2 31104500          金融服务 801190
3 24637023.34 机械设备 801070
4 23879016          房地产 801180
5 16744197.44 医药生物 801150
前三名 24637023.34 机械设备 801070
前三名 31104500          金融服务 801190
前三名 33060379.4 黑色金属 801040
前五名 16744197.44 医药生物 801150
前五名 23879016          房地产 801180
前五名 24637023.34 机械设备 801070
前五名 31104500          金融服务 801190
前五名 33060379.4 黑色金属 801040
如何才能得到如下的结果,就是最后2行是前面的数据的合计,但要能在一起显示出来?
1 33060379.4 黑色金属 801040
2 31104500          金融服务 801190
3 24637023.34 机械设备 801070
4 23879016          房地产 801180
5 16744197.44 医药生物 801150
前三名 88801903  
前五名 129425116

解决方案 »

  1.   

    select RID ,sum_eval,s_i_name1,s_i_code1 from TMP_REP_2 WHERE rownum<=5
    union all
    select rid,sum(sum_eva),null,null
    (select '前三名' rid, sum_eval,s_i_name1,s_i_code1 FROM TMP_REP_2 WHERE rownum<=3
    union
    select '前五名' rid, sum_eval,s_i_name1,s_i_code1 FROM TMP_REP_2 WHERE rownum<=5) group by rid;
      

  2.   

    select RID ,sum_eval,s_i_name1,s_i_code1 from TMP_REP_2 WHERE rownum<=5
    union all
    select rid,sum(sum_eval),null,null
    from (select '前三名' rid, sum_eval,s_i_name1,s_i_code1 FROM TMP_REP_2 WHERE rownum<=3
    union
    select '前五名' rid, sum_eval,s_i_name1,s_i_code1 FROM TMP_REP_2 WHERE rownum<=5) group by rid;
      

  3.   

    按照上述方法执行后提示表达式必须具有与对应表达式相同的数据类型。2个不一致的地方就是那个SUM()。