要求:
t_salesman
SSM_ID NUMBER(10) N 业务员ID
AGENCY_CODE VARCHAR2(20) Y 代理代码
SSM_CODE VARCHAR2(90) Y 业务员内部代码
一个中介机构号码(AGENCY_CODE )为:A0203700,要求生成一个业务员内部代码为(A0203700+三位流水号)。每次生成后插入t_salesman这张表
要求得到的业务员内部代码 每次从最小的流水号增加。比如该表中已经存在这些记录:A0203700001,A0203700004,A0203700005.
那么应该生成的是 业务员内部代码为A0203700002 。取最小的
这个就是实现思路 :
先取得最后的三位流水号码的最小值,然后再增加1,拼接上原来中介机构号码即可。
第一步:取得最好三位流水号:
select reverse(substr(reverse(t2.ssm_code),1,3)) from t_salesman t2 where t2.ssm_code = 'A0203700001';
第二步:利用exsit关键字匹配得到该sql
select min(lpad(reverse(substr(reverse(t.ssm_code),1,3))+1,3,'0')) as ssmCode
from t_salesman t
where t.ssm_code like 'A0203700%'
and not exists
(select * from t_salesman t2
where t2.ssm_code like 'A0203700%'
and reverse(substr(reverse(t2.ssm_code),1,3))=
lpad(reverse(substr(reverse(t.ssm_code),1,3))+1,3,'0'));