MS-SQL怎的给一个表产生流水号的条码

MS-SQL怎样给一个表产生流水号的条码?
如题有一个表A:
A01(序号)      A02(编号)    A03(条码)
-----------------------------------------------
001                a01              C1406190008
002                a03
003                a04
...

想根据最后表的最后一个条码字段,依次往后产生条码,比如A03最后一个条码是C1406190008,那么产生的其它的条码应该往下排C1406190009,C1406190010...
------解决方案--------------------
你的A03(条码) 是16进制的吗?如果是16进制的,先取最大的: A03(条码) ,然后加1 。。。
如果不是16进制的,就取整数位转化为int型+1 然后再强制类型转化为varchar 跟前面的字符去拼接
------解决方案--------------------

create table test(编号 nvarchar(20))


DECLARE @Sequence varchar(4)                   
SET @Sequence = RIGHT(        
        (        
            SELECT MAX(编号)        
            FROM   test        
            WHERE   编号 LIKE 'C'+ CONVERT(varchar(100),GETDATE(), 12) + '%'        
        ),        
        4        
)              
IF @Sequence IS NOT NULL        
BEGIN        
    insert test values('C'+CONVERT(varchar(100),GETDATE(),12)+ right(cast(power(10,4) as varchar)+convert(int,@Sequence)+1,4))
 
END        
ELSE        
BEGIN        
    insert test values('C'+CONVERT(varchar(100),GETDATE(),12)+'0001')     
END                       


select * from test
/*
C1406190001
C1406190002
*/ 

------解决方案--------------------

create table 表A
(A01 varchar(10),A02 varchar(10),A03 varchar(20))

insert into 表A
 select '001','a01','C1406190008' union all
 select '002','a03','' union all
 select '003','a04',''


-- 更新
update a
 set a.A03=left(b.x,1)+rtrim(cast(stuff(b.x,1,1,'') as bigint)+b.r)
 from 表A a
 inner join
 (select a.A01,
         (select top 1 A03 from 表A b where b.A01<a.A01) 'x',
         row_number() over(order by a.A01) 'r'
  from 表A a
  where a.A03='') b on a.A01=b.A01


-- 结果
select * from 表A
 
/*
A01        A02        A03
---------- ---------- --------------------
001        a01        C1406190008
002        a03        C1406190009
003        a04        C1406190010

(3 row(s) affected)
*/

------解决方案--------------------
----------------------------------------------------------------
-- Author  :DBA_HuangZJ(发粪涂墙)
-- Date    :2014-06-19 16:11:53
-- Version:
--      Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
-- Apr  2 2010 15:48:46 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([A01] nvarchar(6),[A02] nvarchar(6),[A03] nvarchar(22))
insert [huang]
select '001','a01','C1406190008' union all
select '002','a03',null union all
select '003','a04',null
--------------生成数据--------------------------