Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie erhalte ich die nächste verfügbare Nummer von einem SQL Server? (Keine Identitätsspalte)

Ich denke, von der Frage her bist du nach dem nächsten verfügbar, obwohl das möglicherweise nicht dasselbe wie max+1 ist, oder? - In diesem Fall:

Beginnen Sie mit einer Liste von Ganzzahlen und suchen Sie nach denen, die in der Spalte groupid nicht vorhanden sind, zum Beispiel:

;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

Hinweis:Sie müssen 2001/4000 anpassen Werte in den CTE, um den gewünschten Bereich zu ermöglichen. Ich habe den Namen Ihrer Tabelle von MyTable übernommen