Yêu cầu thực tế là dãy thứ cấp không có khoảng trống? Nếu vậy, bạn đã gặp phải vấn đề về khả năng mở rộng / tuần tự hóa khổng lồ.
Nếu bạn cần trình bày một trình tự không có khoảng trống cho tiêu dùng của con người, bạn có thể sử dụng một trình tự thực tế (hoặc dấu thời gian, cho vấn đề đó) như Nick Pierpont đề xuất và duy trì khả năng mở rộng, bạn có thể sử dụng các hàm phân tích.
Tập dữ liệu (t1):
ID_PERSON SEQUENCE_ID
---------- -----------
1 1
2 2
3 3
1 4
1 5
1 6
2 7
3 8
1 9
SQL:
select *
from
(select id_person,
sequence_id as orig_sequence_id,
rank ()
over (partition by id_person
order by sequence_id)
as new_sequence_id
from t1
)
order by id_person, new_sequence_id;
Kết quả:
ID_PERSON ORIG_SEQUENCE_ID NEW_SEQUENCE_ID
---------- ---------------- ---------------
1 1 1
1 4 2
1 5 3
1 6 4
1 9 5
2 2 1
2 7 2
3 3 1
3 8 2