Essayez de commander par date de commande, vous verrez les résultats plus facilement
select Row_Number() over(partition by orderdate order by orderdate asc)
as Rownumber, salesorderid, orderdate
from test2
order by orderdate;
devrait donner (j'ai ajouté des lignes vides pour plus de clarté)
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
Vous remarquerez que le résultat est divisé en "partitions", chaque partition étant l'ensemble des lignes avec des dates de commande identiques. C'est ce que signifie "partitionner par date de commande".
Dans une partition, les lignes sont triées par date de commande, conformément à la deuxième clause de '(partition by orderdate order by orderdate asc)'. Ce n'est pas très utile, car toutes les lignes d'une partition auront la même date de commande. Pour cette raison, l'ordre des lignes dans une partition est aléatoire. Essayez de trier par salesorderid dans la partition par clause pour obtenir un résultat plus reproductible.
row_number() renvoie simplement l'ordre de la ligne dans chaque partition