Generar consecutivos dinámicos Sql Server

Muchas veces los clientes nos piden generar un consecutivo dinámico con un formato específico y particular cada vez que se genere un registro.

Para ello les dejo entonces el código para una tabla que se llama eventos como en se usa como valor fijo “ER-“ y el valor dinámico del consecutivo se describe en corchetes [0-9].

DECLARE @LastCode as  NVarchar(200);
DECLARE @Consecutive as  NVarchar(200);
DECLARE @NextValue as  NVarchar(200);
DECLARE @NewCode as  NVarchar(200);
set @LastCode = (SELECT Codigo FROM Eventos WHERE Codigo = (SELECT MAX(Codigo) FROM Eventos WHERE Codigo LIKE 'ER-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
set @Consecutive = SUBSTRING(@LastCode,4,7);
set @NextValue = @Consecutive + 1;
set @NewCode = 'ER-' + @NextValue;
print @LastCode;
print @Consecutive;
print @NextValue;
print @NewCode;

ER-2000212   — Ultimo código ingresado

2000212      — valor del ultimo consecutivo

2000213      — nuevo consecutivo

ER-2000213   — nuevo código