Oracle:为重复行创建序列号
我有一个包含3列的表:Oracle:为重复行创建序列号,oracle,sequence,repeat,Oracle,Sequence,Repeat,我有一个包含3列的表: ID VALUE SEQ 1 100 2 100 3 200 4 200 5 200 每当“value”列中的值在以后的行中重复时,“SEQ”列中的值必须增加1。预期输出为: ID VALUE SEQ 1 100 1 2 100 2 3 200 1 4 200 2 5 200 3 据我所知,在将数据归档到此表时,不能
ID VALUE SEQ
1 100
2 100
3 200
4 200
5 200
每当“value”列中的值在以后的行中重复时,“SEQ”列中的值必须增加1。预期输出为:
ID VALUE SEQ
1 100 1
2 100 2
3 200 1
4 200 2
5 200 3
据我所知,在将数据归档到此表时,不能在insert查询中执行此操作。必须使用后处理完成此操作。我猜可以使用分析函数使用“row_number()并按“,但不知道怎么做。请让我知道,如果可以用更好的方法。任何暗示都将不胜感激。
谢谢。表中的
SEQ
必须作为永久行存在,还是只有在查询数据时才有用和相关?另一个相关的注意事项是,如果一行被删除或更新,会发生什么情况?您是否希望为所有剩余行重新计算间隙/重复(例如,如果ID
为3
的行的值更新为100
),或者SEQ
,则会得到重复?该序列在表中永久存在。删除或添加行后,触发器负责修改序列。
select id, value, row_number() over (partition by value order by id) as seq
from your_table;