--使用了max,要进行分组group INSERT INTO cpy(bh, unitid, nd, type, buyyear, factory, address, tze, tzly, re)
SELECT CONVERT(varchar(50), MAX(bh) + 1) AS bh, unitid, CONVERT(varchar(50), 
      YEAR(GETDATE())) AS nd, type, buyyear, factory, address, tze, tzly, re
FROM cpy
WHERE (nd = YEAR(GETDATE()) - 1)
group by unitid,type, buyyear, factory, address, tze, tzly, re

解决方案 »

  1.   

    INSERT INTO cpy
          (bh, unitid, nd, type, buyyear, factory, address, tze, tzly, re)SELECT CONVERT(varchar(50), MAX(bh) + 1) AS bh, unitid, CONVERT(varchar(50), 
          YEAR(GETDATE())) AS nd, type, buyyear, factory, address, tze, tzly, re
    FROM cpy
    WHERE (nd = YEAR(GETDATE()) - 1)
    group by unitid, type, buyyear, factory, address, tze, tzly, re
      

  2.   

    如果是一次插入多条记录,分两步执行:SELECT 
        bh = identity(int,1,1), 
        unitid, 
        CONVERT(varchar(50), YEAR(GETDATE())) AS nd, 
        type, buyyear, factory, address, tze, tzly, re
    into 
        #T
    FROM 
        cpy
    WHERE 
        nd = YEAR(GETDATE()) - 1
    insert into cpy
          (bh, unitid, nd, type, buyyear, factory, address, tze, tzly, re)
    select
        bh = (select max(bh) from cpy where nd = YEAR(GETDATE())-1)+bh, 
        unitid, nd, type, buyyear, factory, address, tze, tzly, re
    from
        #T
    order by
        bhdrop table #T
      

  3.   

    如果只插入一条记录:INSERT INTO cpy
          (bh, unitid, nd, type, buyyear, factory, address, tze, tzly, re)
    SELECT 
        CONVERT(varchar(50),MAX(bh)+1) AS bh,
        unitid, 
        CONVERT(varchar(50), YEAR(GETDATE())) AS nd, 
        type, buyyear, factory, address, tze, tzly, re
    FROM 
        cpy
    WHERE 
        nd = YEAR(GETDATE()) - 1
    group by
        unitid,type, buyyear, factory, address, tze, tzly, re
      

  4.   

    declare @bh int
     select @bh=max(cast(bh as int))+1 from cpyINSERT INTO cpy(bh, unitid, nd, type, buyyear, factory,
                     address, tze, tzly, re)
    SELECT cast(@bh as varchar(50), unitid,
            CONVERT(varchar(50),YEAR(GETDATE())) ,
           type, buyyear, factory,address, tze, tzly, re
    FROM cpy
    WHERE (nd = YEAR(GETDATE()) - 1) Update cpy set bh=cast(@bh-1 as varchar(50)),@bh=@bh+1
    where cast(bn as int)>=@bh
      

  5.   

    OKOK,没问题,,过一阵我可能要到北京去工作,如果能遇到到一定还。。