Podsumowanie: w tym samouczku dowiesz się, jak używać programu SQL Server ROW_NUMBER()
, aby przypisać sekwencyjną liczbę całkowitą do każdego wiersza zestawu wyników.
Wprowadzenie do funkcji SQL Server ROW_NUMBER ()
ROW_NUMBER()
to funkcja okna, która przypisuje sekwencyjną liczbę całkowitą do każdego wiersza w ramach partycji zestawu wyników. Numer wiersza zaczyna się od 1 w pierwszym wierszu każdej partycji.
Poniżej przedstawiono składnię funkcji ROW_NUMBER()
:
zbadaj szczegółowo składnię funkcji ROW_NUMBER()
.
PARTITION BY
PARTITION BY
klauzula dzieli wynik na partycje (inny termin na grupy wierszy). Funkcja ROW_NUMBER()
jest stosowana do każdej partycji oddzielnie i ponownie inicjuje numer wiersza dla każdej partycji.
Klauzula PARTITION BY
jest opcjonalne. Jeśli ją pominiesz, funkcja ROW_NUMBER()
potraktuje cały zestaw wyników jako pojedynczą partycję.
ORDER BY
ORDER BY
określa logiczną kolejność wierszy w każdej partycji zestawu wyników. Klauzula ORDER BY
jest obowiązkowa, ponieważ funkcja ROW_NUMBER()
rozróżnia kolejność.
SQL Przykłady serwera ROW_NUMBER ()
Użyjemy tabeli sales.customers
z przykładowej bazy danych, aby zademonstrować funkcję ROW_NUMBER()
.
Korzystanie z SQL Server ROW_NUMBER () funkcja na przykładzie zestawu wyników
Poniższa instrukcja używa ROW_NUMBER()
do przypisania każdemu wierszowi klienta kolejnego numeru:
Oto częściowa wyjście:
W tym przykładzie pominięto klauzulę PARTITION BY
, dlatego ROW_NUMBER()
traktował cały zestaw wyników jako pojedynczą partycję.
Używanie SQL Przykład serwera ROW_NUMBER () nad partycjami
W poniższym przykładzie zastosowano ROW_NUMBER()
funkcja, aby przypisać sekwencyjną liczbę całkowitą każdemu klientowi. Resetuje numer, gdy zmienia się miasto:
Poniższy rysunek przedstawia częściowe dane wyjściowe:
W tym przykładzie użyliśmy klauzuli PARTITION BY
, aby podzielić klientów na partycje według miasta. Numer wiersza został ponownie zainicjowany po zmianie miasta.
Używanie SQL Server ROW_NUMBER () do paginacji
Funkcja ROW_NUMBER()
jest przydatna do paginacji w aplikacjach. Na przykład możesz wyświetlić listę klientów według strony, gdzie każda strona ma 10 wierszy.
W poniższym przykładzie ROW_NUMBER()
zwraca klientów z wiersza 11 do 20, czyli druga strona:
Wynik jest następujący:
W tym przykładzie:
- Najpierw CTE użyło funkcji
ROW_NUMBER()
do przypisania każdy wiersz w wyniku ustawiał sekwencyjną liczbę całkowitą. - Po drugie, zapytanie zewnętrzne zwróciło wiersze drugiej strony, których numer wiersza mieści się w zakresie od 11 do 20.
W tym samouczku nauczyłeś się, jak używać funkcji SQL Server ROW_NUMBER()
do przypisywania sekwencyjnej liczby całkowitej do każdego wiersza w ramach partycji zapytania.