Сбросить серийный номер после окончания периода в SQL Server - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь реализовать логику, о которой я упоминал ниже.

Финансовый год начинается 1 апреля и заканчивается 31 марта (в следующем году). В течение этого периода я хочу увеличить число последовательно. Но когда наступит следующий финансовый год, серийный номер не будет сброшен. Предположим, что если 31 марта 2019 года последний серийный номер будет PA9999, то 1 апреля 2019 года серийный номер начнется с PA0001 и так далее. Снова 1 апреля 2020 года первый серийный номер будет PA0001. Это произойдет во время добавления, поэтому никаких изменений в старых записях не произойдет. Я использую SQL для ее решения.

Как лучше всего достичь этого?

Спасибо

Парта

1 Ответ

0 голосов
/ 15 марта 2019

Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...