在SQL Server中的句点结束后重置序列号

问题描述 投票:0回答:1

我正在尝试实现我在下面提到的逻辑。

财政年度从4月1日开始,到3月31日(明年)结束。在这段时间内,我想连续增加一个数字。但是当下一个财政年度到来时,序列号将被重置。假设在2019年3月31日,最后一个序列号是PA9999,那么在2019年4月1日,序列号将从PA0001开始,依此类推。同样在2020年4月1日,第一个序列号将是PA0001。这将在添加期间发生,因此旧记录不会发生任何更改。我正在使用SQL来解决它。

实现它的最佳方法是什么?

谢谢

珀斯

sql sql-server
1个回答
0
投票

试试这个:

DECLARE @tblFY TABLE
(
    Id INT,
    FinancialYear VARCHAR(100),
    StartDate DATETIME,
    EndDate DATETIME
)

INSERT INTO @tblFY(Id, FinancialYear, StartDate, EndDate)
VALUES(1,'FY - 2010','01-Apr-2010','31-Mar2011')

DECLARE @tblsales TABLE
(
    Id INT,
    FinancialYearId int,
    SerialNumber VARCHAR(10)
)

DECLARE @yourFinancialYearId INT
SET @yourFinancialYearId = 1

INSERT INTO @tblsales(Id, FinancialYearId, SerialNumber)
VALUES(1, 1   ,'PA0001'  )

SELECT NextSerialNumber = 'PA' + RIGHT('0000'+ CAST( (ISNULL(MAX(CONVERT(INT,REPLACE(SerialNumber,'PA',''))),0) + 1) AS VARCHAR(10)),4) FROM @tblsales WHERE FinancialYearId = @yourFinancialYearId
© www.soinside.com 2019 - 2024. All rights reserved.