Truy vấn này sẽ trả về status_id's duy nhất, nhưng chỉ khi sự kết hợp của status_id đó và từng trường khác cũng là duy nhất. Bạn có thể chọn status_id's duy nhất, nhưng bạn không thể trả về tất cả các giá trị của các trường khác nếu có nhiều hơn một kết hợp cho mỗi status_id.
[sửa]
Nếu bạn chỉ muốn bản ghi đầu tiên cho mỗi trạng thái:
select
status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active
from
(select
row_number() over (partition by status_id order by 1) as number,
status_id, schedule_id, cassay_id, time_of_day, days, notify_to_addresses, active
FROM ordertest)
where
number = 1
Thay vì row_number
, dense_rank
và rank
cũng được sử dụng cho các kiểu đánh số khác nhau, nhưng trong trường hợp này, bạn thực sự muốn một hàng duy nhất và row_number là đủ.
Không chắc chắn order by
là bắt buộc. Nếu không, bạn có thể bỏ nó ra ngoài. Nếu đúng như vậy, bạn có thể chỉ định một giá trị giả hoặc chỉ định một trường cụ thể mà bạn muốn sử dụng làm 'hàng đầu tiên'. Ví dụ:tăng tốc order by schedule_id
để trả về Sched_id thấp nhất cho mỗi status_id.