sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo obtengo el siguiente número disponible de un servidor SQL? (No es una columna de identidad)

Creo que por la pregunta que buscas es el siguiente disponible, aunque puede que no sea lo mismo que max+1, ¿verdad? - En ese caso:

Comience con una lista de números enteros y busque los que no están en la columna groupid, por ejemplo:

;WITH CTE_Numbers AS (
    SELECT n = 2001
    UNION ALL
    SELECT n + 1 FROM CTE_Numbers WHERE n < 4000 
)
SELECT top 1 n 
FROM CTE_Numbers num
WHERE NOT EXISTS (SELECT 1 FROM MyTable tab WHERE num.n = tab.groupid)
ORDER BY n

Nota:debe modificar el 2001/4000 valores en el CTE para permitir el rango que desea. Asumí el nombre de su tabla por MyTable