select * from 表,请问如何给结果编号。就是在查询结果的前面加上1、2、3、4。。这样的数字。有100条的话就是1~100。

解决方案 »

  1.   

    select rownum, t.* from table t;------------------------------------------------------------------------------ 
    Blog: http://blog.csdn.net/tianlesoftware 
    网上资源: http://tianlesoftware.download.csdn.net 
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx 
    Q Q 群:62697716 
      

  2.   


    楼上正解!
    利用oracle的伪列rownum。
      

  3.   


    --如果需要排序后再编号,就需要用子查询,如:
    select rownum, a.* from (select * from emp t order by t.sal) a;--就不能使用下面的语句了
    select rownum, t.* from emp t order by t.sal;
      

  4.   

    select row_number() over(order by sale/cnt desc) as sort, sale/cnt 
    from (
    select -60 as sale,3 as cnt from dual union 
    select 24 as sale,6 as cnt from dual union 
    select 50 as sale,5 as cnt from dual union 
    select -20 as sale,2 as cnt from dual union 
    select 40 as sale,8 as cnt from dual);select ename,sal,deptno,row_number() over (partition by deptno order by sal desc) as sal_order 
    from (select 'KING' as ename,5000 as sal,10 as deptno from dual union
    select 'CLARK' as ename,2450 as sal,10 as deptno from dual union
    select 'MILLER' as ename,1300 as sal,10 as deptno from dual union
    select 'SCOTT' as ename,3000 as sal,30 as deptno from dual union
    select 'FORD' as ename,3000 as sal,20 as deptno from dual union
    select 'JONES' as ename,2975 as sal,50 as deptno from dual union
    select 'ADAMS' as ename,1100 as sal,30 as deptno from dual union
    select 'SMITH' as ename,800 as sal,20 as deptno from dual union
    select 'BLAKE' as ename,2850 as sal,10 as deptno from dual);
    select deptno,ename,sal from 
         (select deptno,ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order 
             from (select 'KING' as ename,5000 as sal,10 as deptno from dual union
    select 'CLARK' as ename,2450 as sal,10 as deptno from dual union
    select 'MILLER' as ename,1300 as sal,10 as deptno from dual union
    select 'SCOTT' as ename,3000 as sal,30 as deptno from dual union
    select 'FORD' as ename,3000 as sal,20 as deptno from dual union
    select 'JONES' as ename,2975 as sal,50 as deptno from dual union
    select 'ADAMS' as ename,1100 as sal,30 as deptno from dual union
    select 'SMITH' as ename,800 as sal,20 as deptno from dual union
    select 'BLAKE' as ename,2850 as sal,10 as deptno from dual)) 
    where sal_order <2;
             
    select deptno,sal,rank() over (partition by deptno order by sal) as rank_order
    from (select 'KING' as ename,5000 as sal,10 as deptno from dual union
    select 'CLARK' as ename,1300 as sal,10 as deptno from dual union
    select 'MILLER' as ename,1300 as sal,10 as deptno from dual union
    select 'SCOTT' as ename,3000 as sal,30 as deptno from dual union
    select 'FORD' as ename,3000 as sal,30 as deptno from dual union
    select 'JONES' as ename,5975 as sal,30 as deptno from dual union
    select 'ADAMS' as ename,1100 as sal,30 as deptno from dual union
    select 'SMITH' as ename,800 as sal,20 as deptno from dual union
    select 'BLAKE' as ename,2850 as sal,10 as deptno from dual) 
    order by deptno;
    select deptno,sal,dense_rank() over(partition by deptno order by sal) as dense_rank_order 
    from (select 'KING' as ename,5000 as sal,10 as deptno from dual union
    select 'CLARK' as ename,1300 as sal,10 as deptno from dual union
    select 'MILLER' as ename,1300 as sal,10 as deptno from dual union
    select 'SCOTT' as ename,3000 as sal,30 as deptno from dual union
    select 'FORD' as ename,3000 as sal,30 as deptno from dual union
    select 'JONES' as ename,5975 as sal,30 as deptno from dual union
    select 'ADAMS' as ename,1100 as sal,30 as deptno from dual union
    select 'SMITH' as ename,800 as sal,20 as deptno from dual union
    select 'BLAKE' as ename,2850 as sal,10 as deptno from dual) 
    order by deptno; SELECT ename "Ename", deptno "Deptno", sal "Sal",
      SUM(sal) OVER (ORDER BY deptno, ename) "Running Total",
      SUM(SAL) OVER (PARTITION BY deptno ORDER BY ename) "Dept Total",
      ROW_NUMBER() OVER (PARTITION BY deptno ORDER BY ENAME) "Seq"
    FROM (select 'KING' as ename,5000 as sal,10 as deptno from dual union
    select 'CLARK' as ename,2450 as sal,10 as deptno from dual union
    select 'MILLER' as ename,1300 as sal,10 as deptno from dual union
    select 'SCOTT' as ename,3000 as sal,30 as deptno from dual union
    select 'FORD' as ename,3000 as sal,20 as deptno from dual union
    select 'JONES' as ename,2975 as sal,50 as deptno from dual union
    select 'ADAMS' as ename,1100 as sal,30 as deptno from dual union
    select 'SMITH' as ename,800 as sal,20 as deptno from dual union
    select 'BLAKE' as ename,2850 as sal,10 as deptno from dual)
    ORDER BY deptno, ename
      

  5.   

    请问如何结合rownum给以下语句前面加个编号呢?我试了好久都不行,谢谢。select to_char(riqi,'yyyy-mm-dd') 日期,b.bumen 提出部门,khsy 考核事由,c.bumen 被考核部门,kjed 扣奖额度,sytk 适用条款 from hz a join bumen b on a.tcbm=b.id join bumen c on a.bkhbm=c.id where riqi>=to_date('2010-01-01 00:00:00','yyyy-MM-dd hh24:mi:ss') and riqi<=to_date('2010-01-31 23:59:59','yyyy-MM-dd hh24:mi:ss') and (b.bumen like '%%' or khsy like '%%' or c.bumen like '%%' or kjed like '%%' or sytk like '%%') order by a.riqi desc
      

  6.   

    select rownum, b.*
    from (select ... order by a.riqi desc) b
      

  7.   


       你使用了order排序,则要再用一个子查询。。