Versuchen Sie, nach Bestelldatum zu bestellen, dann sehen Sie die Ergebnisse einfacher
select Row_Number() over(partition by orderdate order by orderdate asc)
as Rownumber, salesorderid, orderdate
from test2
order by orderdate;
geben sollte (ich habe zur Verdeutlichung Leerzeilen hinzugefügt)
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
Sie werden feststellen, dass das Ergebnis in „Partitionen“ unterteilt ist, wobei jede Partition die Reihe von Zeilen mit identischen Bestelldaten ist. Das bedeutet 'Aufteilen nach Bestelldatum'.
Innerhalb einer Partition werden die Zeilen nach Bestelldatum geordnet, gemäß der zweiten Klausel von „(partition by orderdate order by orderdate asc)“. Das ist nicht sehr nützlich, da alle Zeilen innerhalb einer Partition das gleiche Bestelldatum haben werden. Aus diesem Grund ist die Reihenfolge der Zeilen innerhalb einer Partition zufällig. Versuchen Sie, innerhalb der partition by-Klausel nach salesorderid zu bestellen, um ein besser reproduzierbares Ergebnis zu erhalten.
row_number() gibt nur die Reihenfolge der Zeilen innerhalb jeder Partition zurück