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

Hvordan får jeg det næste tilgængelige nummer fra en SQL Server? (Ikke en identitetskolonne)

Jeg tror ud fra spørgsmålet, at du leder efter den næste ledige, selvom det måske ikke er det samme som max+1 vel? - I så fald:

Start med en liste over heltal, og se efter dem, der ikke er der i gruppeid-kolonnen, for eksempel:

;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

Bemærk:du skal justere 2001/4000 værdier i CTE for at tillade det ønskede område. Jeg antog navnet på din tabel til MyTable



  1. Slet aldrig poster? God ide? Sædvanlig?

  2. generere dage fra datointerval

  3. SQL Server 2008, hvor meget plads optager denne?

  4. Begræns brugeradgang til tabellen ved hjælp af SQL Server 2008