表A:
 
字段1    字段2     字段3    字段4
001      liao      AA          tw
002      liao      AA          tw
003      liao      BB          tw
004      ming      CC          bb要实现的功能:先通过字段4 group by,然后 order by 字段3
如果字段4一样的条件下,字段2出现同样的值,必须累加1,如liao liao1 liao2 .....输出如下:(主要是实现update 字段2)字段1    字段2     字段3          字段4
001      liao.tw       AA          tw
002      liao1.tw      AA          tw
003      liao2.tw      BB          tw
004      ming.bb       CC          bb其中字段2的组成格式为:原来字段 + 累加序号(出现同样的+1) + "." + 字段4请问各位高手,能否通过一条sql解决。表中数据字段1为主键,如何实现使效率最高。
先谢谢了,很急。

解决方案 »

  1.   

    SQL> select * from t2;        C1 C2         C3         C4
    ---------- ---------- ---------- ----------
             1 liao       AA         tw
             2 liao       AA         tw
             3 liao       AA         tw
             4 ming       CC         bbSQL> 
    SQL> select c1,c2 || decode(rn,1,'',rn-1) || '.' || c4 as c2,c3,c4  from
      2  (select t2.*,row_number() over(partition by t2.c4 order by t2.c1) rn from t2) order by c1
      3  /        C1 C2                                                            C3         C4
    ---------- ------------------------------------------------------------- ---------- ----------
             1 liao.tw                                                       AA         tw
             2 liao1.tw                                                      AA         tw
             3 liao2.tw                                                      AA         tw
             4 ming.bb                                                       CC         bb
      

  2.   

    楼上的这样不对,如果
            C1 C2         C3         C4
    ---------- ---------- ---------- ----------
             1 liao       AA         tw
             2 liao       AA         tw
             3 liao       AA         tw
             4 ming       CC         bb
             5 liao       BB         bb输出的在同一组C4里,比如上面是tw\bb两组,tw出现的liao和bb出现的liao必须又重置,也就是说C2相同的不是一直累加,在不同组必须重新拍
      

  3.   

    如果字段4一样的条件下,字段2出现同样的值,必须累加1,如liao liao1 liao2 .....字段4不同,字段2出现相同的必须重新从0排起。