test1表数据如下:zjhm    bjhm
-----------------
a        t1
a        t2
a        t3
b        t1 
b        t2
c        s1
c        s2
c        s3
......
如何依照zjhm和bjhm产生一个虚拟的序号,结果如下:
-----------------------
zjhm    bjhm       xh 
a        t1        1
a        t2        2 
a        t3        3
b        t1        1 
b        t2        2
c        s1        1
c        s2        2 
c        s3        3
......

解决方案 »

  1.   

    select zjhm,bjhm,
     row_number()over(partition by zjhm order by bjhm)as xh
      from test1 order by zjhm
      

  2.   

    select zjhm,bjhm,
           row_number()over(partition by zjhm order by bjhm) as xh
    from test1 order by zjhm
      

  3.   

    ROW_NUMBER
    功能描述:返回有序组中一行的偏移量,从而可用于按特定标准排序的行号。
    SAMPLE:下例返回每个员工再在每个部门中按员工号排序后的顺序号
    SQL> conn hr/hr;
    Connected to Oracle9i Enterprise Edition Release 9.0.1.1.1 
    Connected as hrSQL> 
    SQL> SELECT department_id, last_name, employee_id, ROW_NUMBER()
      2  OVER (PARTITION BY department_id ORDER BY employee_id) AS emp_id
      3  FROM employees
      4  WHERE department_id < 50;DEPARTMENT_ID LAST_NAME                 EMPLOYEE_ID     EMP_ID
    ------------- ------------------------- ----------- ----------
               10 Whalen                            200          1
               20 Hartstein                         201          1
               20 Fay                               202          2
               30 Raphaely                          114          1
               30 Khoo                              115          2
               30 Baida                             116          3
               30 Tobias                            117          4
               30 Himuro                            118          5
               30 Colmenares                        119          6
               40 Mavris                            203          110 rows selected