DECLARE @NewID VARCHAR(100)
DECLARE @LastID VARCHAR(100)
DECLARE @Month VARCHAR(2) = RIGHT('0' + CAST(MONTH(GETDATE()) AS VARCHAR(2)),2)
DECLARE @Year VARCHAR(4) = RIGHT('2' + CAST(YEAR(GETDATE()) AS VARCHAR(4)),2)
IF NOT EXISTS(SELECT TOP 1 * FROM Statio_Permintaan_Det
WHERE RIGHT(permintaand_nmr, 4) = '2020'
ORDER BY permintaand_nmr DESC)
SET @NewID = 'P/0001/AAIJ/' + @Month + '/' + @Year
ELSE
BEGIN
SET @LastID = (SELECT TOP 1 permintaand_nmr
FROM Statio_Permintaan_Det
WHERE RIGHT(permintaand_nmr, 4) = '2020'
ORDER BY permintaand_nmr DESC)
SET @LastID = CAST(SUBSTRING(@LastID, 3, 4) AS INT) + 1
SET @NewID = 'P/' + RIGHT('0000' + @LastID, 4) + '/AAIJ/' + @Month + '/' + @Year
END
SELECT @NewID AS NewID
При запуске этой программы она должна выглядеть следующим образом P/0002/AAIJ/04/20
, потому что в базе данных у меня уже был этот идентификатор P/0001/AAIJ/04/20
, что я пропустил?
Я сравнил этот скрипт с другим, который выглядит так же, но я не могу понять, в чем проблема
Есть похожий сценарий, но это работа
DECLARE @NewID VARCHAR(100)
DECLARE @LastID VARCHAR(100)
DECLARE @Month VARCHAR(2) = RIGHT('0' + CAST(MONTH(GETDATE()) AS VARCHAR(2)),2)
DECLARE @Year VARCHAR(4) = YEAR(GETDATE())
IF NOT EXISTS(SELECT TOP 1 * FROM Statio_Tentative_Det WHERE RIGHT(tentd_nmr,4)='2020' ORDER BY tentd_nmr DESC)
SET @NewID = 'T/0001/AAIJ/'+@Month+'/'+@Year
ELSE
BEGIN
SET @LastID = (SELECT TOP 1 tentd_nmr FROM Statio_Tentative_Det WHERE RIGHT(tentd_nmr,4)='2020' ORDER BY tentd_nmr DESC)
SET @LastID = CAST(SUBSTRING(@LastID,3,4) AS INT) + 1
SET @NewID = 'T/'+RIGHT('0000' + @LastID,4)+'/AAIJ/'+@Month+'/'+@Year
END
SELECT @NewID as NewID
END