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 ()