项目中要求根据 一个号码,生成它的流水号

要求:

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'));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值