实现:订单号码按下单日期的年月以流水号产生解决办法

实现:订单号码按下单日期的年月以流水号产生
我现在有一个订单表,里面有订单号码 varchar(20),下单日期 varchar(8)。。。
我想实现的作业是:订单号码按下单日期的年月以流水号产生。如:R1001001。其中1001 为年月,001为流水号。月份变动,流水号重从001开始。怎么实现?


------解决方案--------------------
select 'R' + convert(char(4),getdate(),120) + REPLICATE('0',3 - len(cast(isnull(convert(numeric(5,0),max(right('订单号码字段',3))),0) + 1 as varchar))) 
+ cast(isnull(convert(numeric(5,0),max(right('订单号码字段',3))),0) + 1 as varchar)
from 订单表
where convert(char(7),getdate())=convert(char(7),取单据表的单据产生日期)

------解决方案--------------------
也可以这样做,就是语句比1楼的写的多一些
string ls_max,ls_no
setnull(ls_max)
//取出当前订单所属月份的最大订单号
select max(订单号码) into :ls_max from 订单表 where substring(下单日期,1,6) = 当前订单的年月;
if isnull(ls_max) then
//如果不存在
ls_no = 当前订单的年月 + "001"
else
ls_no = left(ls_max,5) + string(integer(right(ls_max,3)) + 1,'000')
end if
ls_no就是当前订单的号码