Prova a ordinare in base alla data dell'ordine, vedrai i risultati più facilmente
select Row_Number() over(partition by orderdate order by orderdate asc)
as Rownumber, salesorderid, orderdate
from test2
order by orderdate;
dovrebbe dare (ho aggiunto righe vuote per chiarezza)
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
Noterai che il risultato è diviso in "partizioni", ciascuna partizione è l'insieme di righe con date di ordine identiche. Questo è il significato di "partizione per data dell'ordine".
All'interno di una partizione, le righe sono ordinate per orderdate, come nella seconda clausola di '(partition by orderdate order by orderdate asc)'. Non è molto utile, poiché tutte le righe all'interno di una partizione avranno la stessa data dell'ordine. Per questo motivo, l'ordine delle righe all'interno di una partizione è casuale. Prova a ordinare per salesorderid all'interno della partizione per clausola per avere un risultato più riproducibile.
row_number() restituisce semplicemente l'ordine delle righe all'interno di ciascuna partizione