Coba pesan berdasarkan tanggal pemesanan, Anda akan melihat hasilnya dengan lebih mudah
select Row_Number() over(partition by orderdate order by orderdate asc)
as Rownumber, salesorderid, orderdate
from test2
order by orderdate;
harus memberi (saya telah menambahkan baris kosong untuk kejelasan)
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
Anda akan melihat bahwa hasilnya dibagi menjadi 'partisi', setiap partisi adalah kumpulan baris dengan tanggal pemesanan yang identik. Itulah yang dimaksud dengan 'partition by orderdate'.
Di dalam sebuah partisi, baris-baris diurutkan berdasarkan tanggal pemesanan, sesuai dengan klausa kedua dari '(partisi berdasarkan tanggal pemesanan, urutan berdasarkan tanggal pesanan asc)'. Itu tidak terlalu berguna, karena semua baris dalam partisi akan memiliki tanggal pemesanan yang sama. Karena itu, urutan baris dalam partisi adalah acak. Coba pesan berdasarkan salesorderid dalam klausa partisi demi untuk mendapatkan hasil yang lebih dapat direproduksi.
row_number() baru saja mengembalikan urutan baris dalam setiap partisi