表A有以下数据
type    name 
1202    张三
1202    张四
1201    王八
1202    秦浩
1203    王浩
1202    武平
1203    廖明
1203    田齐
1203    孟子
---------------
希望按TYPE分组进行编序号,用SQL输出一下结果:
1 1201    王八
1 1202    张三
2 1202    秦浩
3 1202    武平
1 1203    王浩
2 1203    廖明
3 1203    田齐
4 1203    孟子
------------------------------
如何实现?谢谢!

解决方案 »

  1.   


    select * from A order by type
      

  2.   

    select type,name  from table_name group by type,name;
    或者
    select type,name  from table_name order by type,name;
    希望能帮助到你,呵呵
      

  3.   


    select rownum ,type,name from A where type='1201' order by type
    union
    select rownum ,type,name from A where type='1202' order by type
    union
    select rownum ,type,name from A where type='1203' order by type
      

  4.   

    SELECT ROW_NUMBER()OVER(PARTITION BY TYPE ORDER BY TYPE)XH,type,name FROM TABLE_NAME TYPE 是关键字,不知道会不会出问题!
      

  5.   

    这个容易啊,用分析函数
    没有并列排名用楼上的,有并列排名用
    dense_rank() 有并列不跳下次排名
    rank() 有并列跳下次排名
      

  6.   

    SELECT ROW_NUMBER()OVER(PARTITION BY TYPE ORDER BY TYPE)XH,type,name FROM TABLE_NAME SELECT rank()OVER(PARTITION BY TYPE ORDER BY TYPE)XH,type,name FROM TABLE_NAME SELECT dense_rank()OVER(PARTITION BY TYPE ORDER BY TYPE)XH,type,name FROM TABLE_NAME 
      

  7.   

    select id=(select count(*) from (select rownum rn,type,name from tb)B where rn<=A.rn)
    ,A.type,A.name
    from (select rownum rn,type,name from tb)A
      

  8.   

    写的复杂就不错啊
    我感觉不好,
    多用函数是很降低效率的
    order by 就可以
      

  9.   

    你单用order by 就能显示编号?
    本来效率和需求就是相对的,不能说因为降低效率,所以需求就不能满足啊
    在不影响正常业务需求的情况下
      

  10.   

    同意hebo2005的,楼主的要求用分析函数才是对的,例子中的数据少可以用order by实现,要是多的话用order by根本搞不定。
    效率高低不是靠看出来的,实际测试分析函数的效率才是最好的:
    SQL> SELECT ROW_NUMBER()OVER(PARTITION BY TYPE ORDER BY TYPE)XH,type,name FROM t        XH       TYPE NAME
    ---------- ---------- ----------
             1       1201 王八
             1       1202 张四
             2       1202 武平
             3       1202 秦浩
             4       1202 张三
             1       1203 田齐
             2       1203 廖明
             3       1203 孟子
             4       1203 王浩已选择9行。
    执行计划
    ----------------------------------------------------------
    Plan hash value: 2335850315---------------------------------------------------------------------------
    | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------
    |   0 | SELECT STATEMENT   |      |     9 |    81 |     4  (25)| 00:00:01 |
    |   1 |  WINDOW SORT       |      |     9 |    81 |     4  (25)| 00:00:01 |
    |   2 |   TABLE ACCESS FULL| T    |     9 |    81 |     3   (0)| 00:00:01 |
    ---------------------------------------------------------------------------
    统计信息
    ----------------------------------------------------------
              0  recursive calls
              0  db block gets
              7  consistent gets
              0  physical reads
              0  redo size
            678  bytes sent via SQL*Net to client
            416  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              1  sorts (memory)
              0  sorts (disk)
              9  rows processed
    SQL> edit
    已写入 file afiedt.buf  1  select rownum ,type,name from t where type='1201'
      2  union
      3  select rownum ,type,name from t where type='1202'
      4  union
      5* select rownum ,type,name from t where type='1203' order by type
    SQL> /    ROWNUM       TYPE NAME
    ---------- ---------- ----------
             1       1201 王八
             1       1202 张三
             2       1202 张四
             3       1202 秦浩
             4       1202 武平
             1       1203 王浩
             2       1203 廖明
             3       1203 田齐
             4       1203 孟子已选择9行。
    执行计划
    ----------------------------------------------------------
    Plan hash value: 2837410067-----------------------------------------------------------------------------
    | Id  | Operation            | Name | Rows  | Bytes | Cost (%CPU)| Time     |
    -----------------------------------------------------------------------------
    |   0 | SELECT STATEMENT     |      |     9 |    81 |    13  (31)| 00:00:01 |
    |   1 |  SORT UNIQUE         |      |     9 |    81 |    12  (75)| 00:00:01 |
    |   2 |   UNION-ALL          |      |       |       |            |          |
    |   3 |    COUNT             |      |       |       |            |          |
    |*  4 |     TABLE ACCESS FULL| T    |     3 |    27 |     3   (0)| 00:00:01 |
    |   5 |    COUNT             |      |       |       |            |          |
    |*  6 |     TABLE ACCESS FULL| T    |     3 |    27 |     3   (0)| 00:00:01 |
    |   7 |    COUNT             |      |       |       |            |          |
    |*  8 |     TABLE ACCESS FULL| T    |     3 |    27 |     3   (0)| 00:00:01 |
    -----------------------------------------------------------------------------Predicate Information (identified by operation id):
    ---------------------------------------------------   4 - filter("TYPE"=1201)
       6 - filter("TYPE"=1202)
       8 - filter("TYPE"=1203)
    统计信息
    ----------------------------------------------------------
              1  recursive calls
              0  db block gets
             21  consistent gets
              0  physical reads
              0  redo size
            682  bytes sent via SQL*Net to client
            416  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              1  sorts (memory)
              0  sorts (disk)
              9  rows processed
      

  11.   

    很明显很简单
    row_number()over()
    SELECT ROW_NUMBER()OVER(PARTITION BY TYPE ORDER BY TYPE) no,type,name FROM TABLE_NAME