创建如下表
create table tx(pid varchar(20))insert into tx values('wa010001');
insert into tx values('wb020001');
insert into tx values('wa010002');
insert into tx values('wb020002');
insert into tx values('wb020003');
insert into tx values('ya010001');
insert into tx values('yb010001');
insert into tx values('yb010002')
select * from tx
想查询当前pid字段前面四位的最大值,然后需要得到其下一个值,怎么写sql
比如 pid字段wa01的这种类型最大值为wa010002了,则下一个值为wa010003
ya01的类型,现在最大为ya010001则下一个值为ya010002
请问怎么产生下一个值,用sql语句实现

解决方案 »

  1.   


    create table tx(pid varchar(20));insert into tx values('wa010001');
    insert into tx values('wb020001');
    insert into tx values('wa010002');
    insert into tx values('wb020002');
    insert into tx values('wb020003');
    insert into tx values('ya010001');
    insert into tx values('yb010001');
    insert into tx values('yb010002');commit;select substr(pid, 1, 4) || max(lpad(to_number(substr(pid, 5)) + 1,4, '0')) "next value"
    from tx
    group by substr(pid, 1, 4);
    next value  
    ------------
    ya010002    
    yb010003    
    wa010003    
    wb020004