Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak uzyskać następny dostępny numer z programu SQL Server? (nie jest to kolumna tożsamości)

Myślę, że z pytania szukasz następnego dostępnego, chociaż może to nie to samo, co max+1, prawda? - W takim przypadku:

Zacznij od listy liczb całkowitych i poszukaj tych, których nie ma w kolumnie groupid, na przykład:

;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

Uwaga:musisz dostosować 2001/4000 wartości w CTE, aby uwzględnić żądany zakres. Przyjąłem nazwę twojej tabeli na MyTable



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wiele dni tygodnia przechowywanych w jednym polu

  2. SQL Server 2005 — kolejność połączeń wewnętrznych

  3. pobierz część daty tylko z wartości daty i godziny za pomocą struktury encji

  4. Pivot bez funkcji agregującej w MSSQL 2008 R2

  5. Prosta instrukcja aktualizacji, dzięki której wszystkie wiersze mają przypisaną inną wartość