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

Jak wygenerować kolejny numer wiersza w tsql?

Nie ma potrzeby unikania funkcji analitycznych, jeśli Twoja baza danych je obsługuje, np. ROW_NUMBER()

    SELECT
        ROW_NUMBER() OVER (ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) AS Number
    FROM
        [<TABLE_NAME>]

Składnia to Func([ arguments ]) OVER (analytic_clause) musisz skupić się na OVER (). Te ostatnie nawiasy tworzą partycje z twoich wierszy i stosują Func() na tych partycjach jeden po drugim. W powyższym kodzie mamy tylko jeden zestaw/partycję wierszy. Dlatego wygenerowana sekwencja dotyczy wszystkich wierszy.

Możesz utworzyć wiele zestawów danych i wygenerować numer sekwencji dla każdego z nich za jednym razem. Na przykład, jeśli potrzebujesz wygenerować numer sekwencyjny dla wszystkich zestawów wierszy, które mają ten sam identyfikator kategorii. Wystarczy dodać Partition By klauzula taka jak ta (PARTITION BY categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) .

Pamiętaj, że po FROM możesz również użyć innego dodatkowego ORDER BY aby sortować dane w inny sposób. Ale nie ma to wpływu na OVER ()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:wyeksportuj zapytanie jako plik .txt

  2. Jak automatycznie reseedować po użyciu identity_insert?

  3. Eksportuj dane serwera SQL do pliku CSV

  4. varbinary do ciągu w SQL Server

  5. Odniesienie Procedury składowane dla wszystkich baz danych na serwerze