Probeer te bestellen op besteldatum, u zult de resultaten gemakkelijker zien
select Row_Number() over(partition by orderdate order by orderdate asc)
as Rownumber, salesorderid, orderdate
from test2
order by orderdate;
zou moeten geven (ik heb lege regels toegevoegd voor de duidelijkheid)
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
U zult zien dat het resultaat is verdeeld in 'partities', waarbij elke partitie de reeks rijen met identieke besteldatums is. Dat is wat 'partitioneren op orderdatum' betekent.
Binnen een partitie zijn de rijen geordend op orderdatum, volgens de tweede clausule van '(partition by orderdate order by orderdate asc)'. Dat is niet erg handig, omdat alle rijen binnen een partitie dezelfde besteldatum zullen hebben. Daarom is de volgorde van de rijen binnen een partitie willekeurig. Probeer te bestellen op verkooporder-id binnen de clausule 'partition by' voor een beter reproduceerbaar resultaat.
row_number() retourneert gewoon de volgorde van de rij binnen elke partitie