有一个表记录如下:myNo name
100001 张三
100002 李四
100003
100999
100999
100999
100999
200001
200002
200004
200999
200999 周无myNo前三位表示单位号,后三位是部门内的序号,由于记录删除和添加(删除可能导致内部序号 不连续;添加我们默认的内部序号就是999)我们就出现了上面这样的情况,请问能不能做一个函数,实现:
内部序号不等于999的,不变动;内部序号为999的,全部重新排序,并使得部门所有成员的内部序号都有序。谢谢
100001 张三
100002 李四
100003
100999
100999
100999
100999
200001
200002
200004
200999
200999 周无myNo前三位表示单位号,后三位是部门内的序号,由于记录删除和添加(删除可能导致内部序号 不连续;添加我们默认的内部序号就是999)我们就出现了上面这样的情况,请问能不能做一个函数,实现:
内部序号不等于999的,不变动;内部序号为999的,全部重新排序,并使得部门所有成员的内部序号都有序。谢谢
MYNO NAME
---------- ----
100001 张三
100002 李四
100003
100999
100999
100999
100999
200001
200002
200004
200999
200999 周五
12 rows selected
SQL>
SQL> select myNo,name
2 from(select myNo,name from tmp where substr(myNo,4,3) <> '999' order by myNo)
3 union all
4 select myNo,name
5 from(select myNo,name from tmp where substr(myNo,4,3) = '999' order by myNo)
6 ;
MYNO NAME
---------- ----
100001 张三
100002 李四
100003
200001
200002
200004
100999
100999
100999
100999
200999
200999 周五
12 rows selected
myNo name
100001 张三
100002 李四
100003 1
100999 2
100999 3
100999 4
100999 5
200001 6
200002 7
200004 8
200999 9
200999 周无
处理结果myNo name
100001 张三
100002 李四
100003 1
100004 2
100005 3
100006 4
100007 5
200001 6
200002 7
200004 8
200003 9
200005 周无能实现这样的一个结果不?