Вы можете создать серийный номер для каждой строки, как показано ниже:
select
tour_no, version_no, itinerary_detail_no,
row_number()
over(order by cnt desc, tour_no, version_no, itinerary_detail_no) as rn
from (
select tour_no, version_no, itinerary_detail_no, count(*) as cnt
from itinerary_detail
group by tour_no, version_no, itinerary_detail_no
) x
order by cnt desc, tour_no, version_no, itinerary_detail_no
Результат:
TOUR_NO VERSION_NO ITINERARY_DETAIL_NO RN
------- ---------- ------------------- --
1 17 5 1
1 10 5 2
2 10 5 3
3 10 5 4
Для справки, сценарий данных для этого теста:
create table itinerary_detail (
tour_no number(6),
version_no number(6),
itinerary_detail_no number(6)
);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 10, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 10, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 17, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 17, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (1, 17, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (2, 10, 5);
insert into itinerary_detail (tour_no, version_no, itinerary_detail_no) values (3, 10, 5);
1009 *** Tour_No ver_No IT_No Seq_No JAA0000197 01 17037249 1 JAA0000197 01 17037250 2 JAA0000197 02 17037249 1 JAA0000197 02 17037250 2 JAA0000197 17037251 3 02 1011 * здесь группа по есть (Tour_No, ver_No), так этоПриведенные выше данные, я хочу, чтобы каждая группа начиналась с 1 и 2 и продолжалась, и для следующей группы снова то же самое