declare @account nvarchar(20)='20110000014'
前四位是年份
如果当前年大于 @account 结果是
20120000001
否则 @account 结果是
20110000015

解决方案 »

  1.   

    declare @account nvarchar(20)
    set @account=N'20110000014'
    select case when datename(yy,getdate())>left(@account,4) then '20120000001' else '20110000015' end
      

  2.   

    --或者
    declare @account nvarchar(20)
    set @account=N'20110000014'
    select case when datename(yy,getdate())>left(@account,4) then '20120000001' 
    else cast(@account as bigint)+1 end
      

  3.   

    可能我需求搞错了
    我自己写了个复杂的
    declare @account nvarchar(20)='20110000001'
    declare @code nvarchar(20),@Lastyear nvarchar(20),@CurrentYear nvarchar(20),@zero int
    set @code=right(@account,6)
    set @Lastyear=left(CONVERT(varchar(100), @account, 112),4) 
    set @CurrentYear=left(CONVERT(varchar(100), GETDATE(), 112),4) 
    if cast(@Lastyear as int)<cast(@CurrentYear as int)
    begin
    set @account=@CurrentYear+'00000001'
    end
    else
    begin
    set @code=(@code+1)
    declare @len int=len(@code+1)
    set @zero=8-@len
    select @zero
    while @zero>0
    begin
    set @code='0'+@code
    set @zero=@zero-1
    end
    set @account=@Lastyear+@code
    end
    select @account
      

  4.   

    改了一下你的declare @account nvarchar(20)
    set @account=N'20110000016'
    select case when datename(yy,getdate())>left(@account,4) then left(CONVERT(varchar(100), GETDATE(), 112),4) +'0000001' 
                else cast(@account as bigint)+1 end
      

  5.   

    declare @account nvarchar(20)
    set @account=N'20110000014'
    select case when datepart(yy,getdate())>left(@account,4) then '20120000001' else '20110000015' end
      

  6.   

    DECLARE @account NVARCHAR(20)
    SET @account = N'20110000016'
    SELECT CASE 
                WHEN YEAR(GETDATE()) = LEFT(@account, 4) THEN CAST(CAST(@account AS BIGINT) + 1 AS NVARCHAR)    
                ELSE DATENAME(yy, GETDATE()) + '0000001'
           END