Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je obtenir le prochain numéro disponible d'un serveur SQL ? (Pas une colonne d'identité)

Je pense que d'après la question, vous recherchez le prochain disponible, bien que ce ne soit peut-être pas la même chose que max + 1, n'est-ce pas? - Dans ce cas :

Commencez par une liste d'entiers et recherchez ceux qui ne figurent pas dans la colonne groupid, par exemple :

;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

Remarque :vous devez modifier le 2001/4000 valeurs dans le CTE pour permettre la plage souhaitée. J'ai supposé le nom de votre table par MyTable