数据如下:
id   name    province 
2001 li      hlj
2003 liu     hlj
2004 jian    ln
2005 li      ln
2006 li      ln
2007 luy     hlj
2008 liu     hlj
2002 luy     hlj结果no   id   name    province 
1    2001 li      hlj
2    2002 luy     hlj
3    2003 liu     hlj
4    2007 luy     hlj
5    2008 liu     hlj
1    2004 jian    ln
2    2005 li      ln
3    2006 li      ln在Oracle 如何求解?
条件是按照province分组求行NO?
求解?

解决方案 »

  1.   

    在 Oracle 不知如何处理,在MSSQL里可以用row_number()函数获取分组排序的序号.
      

  2.   


    --SQL 2005select *,no=row_number() over (partition by province order by getdate())
    from tb
      

  3.   

    SQL2000可以借助临时表,结合identity和count来解决!ORACLE不清楚。貌似可以用rownum和count来试试!
      

  4.   

    直接 
    select   ROWID as no, * from ta
      

  5.   

    create table tb(id varchar(10),name varchar(10),province varchar(10))
    insert into tb select '2001','li','hlj'
    insert into tb select '2003','liu','hlj'
    insert into tb select '2004','jian','ln'
    insert into tb select '2005','li','ln'
    insert into tb select '2006','li','ln'
    insert into tb select '2007','luy','hlj'
    insert into tb select '2008','liu','hlj'
    insert into tb select '2002','luy','hlj'
    go
    select row_number()over(partition by province order by id)no,* from tb
    go
    drop table tb
    /*
    no                   id         name       province
    -------------------- ---------- ---------- ----------
    1                    2001       li         hlj
    2                    2002       luy        hlj
    3                    2003       liu        hlj
    4                    2007       luy        hlj
    5                    2008       liu        hlj
    1                    2004       jian       ln
    2                    2005       li         ln
    3                    2006       li         ln(8 行受影响)*/
      

  6.   


    select row_number() over (partition by province order rownum) as No,id ,name ,province  
    from table_name
      

  7.   

    掉了个byselect row_number() over (partition by province order by rownum) as No,id ,name ,province from tb 
      

  8.   

    select row_number()over(partition by province order by id)no,* from tb
      

  9.   

    select *,no=(row_number() over(partition by province order by id)) from tb
      

  10.   

    注意在oracle里面  select *,no=(row_number() over(partition by province order by id)) from tb* 一定要指明是哪个表的 不然直接报错的