Funkcja SQL Server ROW_NUMBER

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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *