有一个emp表,要显示职员姓名并且以*代表工资数额,列标题为:employee_and_their_salaries,一个指示符号代表100美元,并以工资数降序排列...下面是我做出来的答案:
   select ENAME,decode(trunc(sal/100,0),'8','********','9','*********','11','***********','12','***********','13','*************',
'15','***************','16','****************','24','************************','28','****************************',
'29','*****************************','30','******************************','50','**************************************************') 
as employce_and_their_salaries from emp order by sal desc;有点复杂..请问各位有没有更好的查询方法呢???
可以使用游标..可是我到达到的目的是直接用在select里面..而使用游标必须到后台才能打印出来...

解决方案 »

  1.   

    select ename,substr('****************************************************',1,trunc(sal/100,0)) from as employce_and_their_salaries from emp order by sal desc;
      

  2.   

    select empno, ename, sal, rpad('*', trunc(sal/100), '*') employce_and_their_salaries 
      from emp
      

  3.   

    select empno, ename, sal, rpad('*', trunc(sal/100), '*') employce_and_their_salaries  
      from emp 
    order by sal desc
      

  4.   

    用rpad()
    好长时间没用oracle,发现记住的东西剩了没多少了 :)