【发布时间】:2020-10-05 09:40:10
【问题描述】:
我在 oracle 数据库 (plsql) 的表事件中有一个列 ref_key,其中 ref_key 我是从 creation_time 格式生成的
update events set ref_key= 'EV_'|| TOCHAR(creation_time, 'YYMMDD_HH24MISS');
现在的问题是事件是由文件中的批次生成的,因此许多行的创建时间可以相同。此列中可能有任意数量的重复项,我希望它是唯一的。 我已经有一个主键,这是最近添加的非 id 字段,需要更新现有数据以在此 ref_key 列中具有唯一的非空人类可读值。 我正在获取像 A 列这样的数据,我想要它像 B 列一样
Column A Column B or
EV_201005_151610 EV_201005_151610 EV_201005_151610_1
EV_201005_151610 EV_201005_151610_1 EV_201005_151610_2
EV_201005_151610 EV_201005_151610_2 EV_201005_151610_3
EV_201005_151610 EV_201005_151610_3 EV_201005_151610_4
EV_201005_151610 EV_201005_151610_4 EV_201005_151610_5
EV_201005_151711 EV_201005_151711 EV_201005_151711_1
EV_201005_151711 EV_201005_151711_1 EV_201005_151711_2
EV_201005_151711 EV_201005_151711_2 EV_201005_151711_3
我不知道该怎么做。我可以获得 ref_key where count(ref_key) > 1 的所有不同值。然后可以附加一些序列并在值更改后重置序列,或类似的东西。或者可能是我的第一个更新查询本身。任何人都可以帮助查询以实现此目标。
【问题讨论】:
标签: oracle plsql oracle11g sql-update window-functions