क्या वास्तविक आवश्यकता है कि द्वितीयक अनुक्रम अंतराल मुक्त हो? यदि ऐसा है, तो आपके पास एक विशाल क्रमांकन/मापनीयता समस्या है।
यदि आपको मानव उपभोग के लिए एक अंतर-मुक्त अनुक्रम प्रस्तुत करने की आवश्यकता है, तो आप एक वास्तविक अनुक्रम (या उस मामले के लिए एक टाइमस्टैम्प) का उपयोग कर सकते हैं, जैसा कि निक पियरपोंट स्केलेबिलिटी का सुझाव देते हैं और संरक्षित करते हैं, आप विश्लेषणात्मक कार्यों का उपयोग कर सकते हैं।
डेटासेट (t1):
ID_PERSON SEQUENCE_ID
---------- -----------
1 1
2 2
3 3
1 4
1 5
1 6
2 7
3 8
1 9
एसक्यूएल:
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;
परिणाम:
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