高分求救,一条sql可不可以实现以下这样的功能,急急!!
表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为主键,如何实现使效率最高。
先谢谢了,很急。
问题点数:100、回复次数:4Top
1 楼cenlmmx(学海无涯苦作舟)回复于 2006-06-03 14:50:42 得分 0
SQL> select * from t2;
C1 C2 C3 C4
---------- ---------- ---------- ----------
1 liao AA tw
2 liao AA tw
3 liao AA tw
4 ming CC bb
SQL>
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
Top
2 楼duninglqwlsq(dfd)回复于 2006-06-03 16:46:58 得分 0
楼上的这样不对,如果
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相同的不是一直累加,在不同组必须重新拍Top
3 楼duninglqwlsq(dfd)回复于 2006-06-03 16:49:04 得分 0
如果字段4一样的条件下,字段2出现同样的值,必须累加1,如liao liao1 liao2 .....
字段4不同,字段2出现相同的必须重新从0排起。Top
4 楼young0x()回复于 2006-06-04 03:28:54 得分 0
upTop




