Numerowanie wierszy w wyniku zapytania SQL – Oracle

Tworząc różnego rodzaju raporty czy zestawienia w języku Oracle SQL czasami istnieje konieczność ponumerowania wierszy w wyniku zapytania SQL. Możemy tego dokonać na kilka sposobów. Poniżej przedstawię dwa z nich. Dla przykładów posłużę się tablicą o nazwie: students. W wynikach będziemy numerować wiersze oraz pobierać imię i nazwisko studenta z bazy danych.

students

1. Pierwsza metoda to zastosowanie: row_number()

select row_number() OVER (ORDER BY 1), s.name, s.surname from students s

W wyniku otrzymamy:

1 John True
2 David False
3 Joseph New

Zaletą row_number() jest każdorazowa numeracja wierszy od “1” po ponownym wykonaniu zapytania

2. Druga metoda polega na zastosowaniu sekwencji. Konstrukcje oraz użycie sekwencji dokładnie opisałem na stronie: Sekwencje w Oracle SQL – create, drop sequence (jak utworzyć i usunąć)

select licznik.nextval, s.name, s.surname from students s

Wykonując powyższe zapytanie otrzymany wynik:

1 John True
2 David False
3 Joseph New

Jeżeli ponownie wykonamy to samo zapytanie tym razem dostaniemy:

4 John True
5 David False
6 Joseph New

Stosując sekwencje należy pamiętać, że każde jej wywołanie zwiększa licznik.