L'exigence réelle est-elle que la séquence secondaire soit sans espace? Si c'est le cas, vous avez un énorme problème de sérialisation/évolutivité.
Si vous avez besoin de présenter une séquence sans interruption pour la consommation humaine, vous pouvez utiliser une séquence réelle (ou un horodatage, d'ailleurs) comme le suggère Nick Pierpont et préserver l'évolutivité, vous pouvez utiliser des fonctions analytiques.
Jeu de données (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;
Résultat :
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