Hãy thử đặt hàng theo ngày đặt hàng, bạn sẽ thấy kết quả dễ dàng hơn
select Row_Number() over(partition by orderdate order by orderdate asc)
as Rownumber, salesorderid, orderdate
from test2
order by orderdate;
nên đưa ra (tôi đã thêm các dòng trống cho rõ ràng)
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
Bạn sẽ nhận thấy rằng kết quả được chia thành các 'phân vùng', mỗi phân vùng là tập hợp các hàng có thứ tự giống hệt nhau. Đó là ý nghĩa của 'phân vùng theo ngày đặt hàng'.
Trong một phân vùng, các hàng được sắp xếp theo thứ tự ngày, theo mệnh đề thứ hai của '(phân vùng theo thứ tự theo thứ tự theo thứ tự asc)'. Điều đó không hữu ích lắm, vì tất cả các hàng trong một phân vùng sẽ có cùng một ngày thứ tự. Do đó, thứ tự của các hàng trong một phân vùng là ngẫu nhiên. Hãy thử đặt hàng theo salesorderid trong phân vùng theo điều khoản để có kết quả dễ tái tạo hơn.
row_number () chỉ trả về thứ tự của hàng trong mỗi phân vùng