Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come ottengo il numero successivo disponibile da un server SQL? (Non una colonna Identità)

Penso che dalla domanda tu stia cercando il prossimo disponibile, anche se potrebbe non essere lo stesso di max+1 giusto? - In tal caso:

Inizia con un elenco di numeri interi e cerca quelli che non sono presenti nella colonna groupid, ad esempio:

;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:devi modificare il 2001/4000 valori nel CTE per consentire l'intervallo desiderato. Ho assunto il nome del tuo tavolo da MyTable