Spróbuj zamawiać według daty zamówienia, łatwiej zobaczysz wyniki
select Row_Number() over(partition by orderdate order by orderdate asc)
as Rownumber, salesorderid, orderdate
from test2
order by orderdate;
powinien dać (dodałem puste linie dla jasności)
ROWNUMBER SALESORDERID ORDERDATE
1 43664 07/01/2001
1 43911 08/01/2001
2 43867 08/01/2001
3 43895 08/01/2001
4 43894 08/01/2001
5 43877 08/01/2001
1 44109 09/01/2001
1 44285 10/01/2001
1 44483 11/01/2001
2 44501 11/01/2001
Zauważysz, że wynik jest podzielony na „partycje”, przy czym każda partycja jest zbiorem wierszy z identycznymi datami zamówienia. To właśnie oznacza „partycjonowanie według daty zamówienia”.
W ramach partycji wiersze są uporządkowane według daty zamówienia, zgodnie z drugą klauzulą „(partycja według kolejności według daty zamówienia według daty zamówienia asc)”. Nie jest to zbyt przydatne, ponieważ wszystkie wiersze w partycji będą miały tę samą datę zamówienia. Z tego powodu kolejność wierszy w obrębie partycji jest losowa. Spróbuj zamówić według salesorderid w klauzuli partition by, aby uzyskać bardziej powtarzalny wynik.
row_number() po prostu zwraca kolejność wierszy w każdej partycji