|  | 
| 最初由 ZALBB 发布[B]
 
 数据类型、长度不变,但数据变了,或者说,不是ID=1的情况,
 而是应用时指定的任意一值。
 
 刚才我尝试过,把 'A02' 改为 'A03',删除掉ID=4中多出的一条,
 结果就不适用你的方法。
 
 或者这么说,若SQL语句里用不上已知条件(ID=1),
 或者根据SUBJECT的值来制定SQL语句的话,都不符合要求。 [/B]
 我那方法是有问题,比如:
 4 A01
 4 A02
 4 A03
 4 A04
 与
 4 A01
 4 A03
 4 A03
 4 A03
 是等效的,ID相同,有重复记录会有问题。
 除非这个重复,而且要使有序,用这个可以:
 1  select id,subject,rn-to_number(substr(subject,3))
 2  from
 3  (
 4  select id,subject,row_number() over(partition by id order by subject) rn
 5   from classtab
 6* )
 SQL> /
 
 ID SUBJECT    RN-TO_NUMBER(SUBSTR(SUBJECT,3))
 ---------- ---------- -------------------------------
 1 A01                                      0
 1 A02                                      0
 3 A01                                      0
 3 A03                                     -1
 4 A01                                      0
 4 A02                                      0
 4 A03                                      0
 4 A04                                      0
 从这里,判断ID里subject里是一个有序,没间断的。
 然后再实现你要的,后面写的SQL很烦,我现在还没实现!
 | 
 |