Làm cách nào để nhận hàng đầu tiên lọc một số giá trị? Tôi đã sử dụng row_number() trên (phân vùng theo Tên ORDER BY Date) để nhận lệnh (Xem ví dụ bên dưới). Nhưng tôi cần, thứ hạng sẽ bắt đầu từ sự xuất hiện cuối cùng của Type = B (Xem kết quả mong muốn)Oracle SQL: Bắt hàng đầu tiên với các bộ lọc
SELECT Name, Age, Type, Date,
row_number() over(partition by Name ORDER BY Date) as Rank
FROM TableA;
Ví dụ:
Name Age Type Date Rank
Ben 12 A 2013/02/01 1
Rod 14 A 2013/02/05 2
Zed 13 B 2013/03/09 3
Ken 12 A 2013/04/02 4
Jed 14 B 2013/05/01 5
Mar 13 A 2013/05/04 6
Nic 12 A 2013/06/02 7
Jen 15 A 2013/06/09 8
Dự kiến Output:
Name Age Type Date Rank
Mar 13 A 2013/05/04 1
Nic 12 A 2013/06/02 2
Jen 15 A 2013/06/09 3
Điều này chọn xếp hạng cao nhất A và B. Tôi đọc câu hỏi là "Tôi cần tất cả các bản ghi mới hơn B mới nhất". –
@MartinSchapendonk OP đã thay đổi câu hỏi. – peterm