公司系统升级的时候需要数据迁移,遇到一个问题:新表的数据结构和旧表异构,旧表是流水号,新表是联合主键(业务号码+业务号码序号)
最后发现用窗口函数 row_number() + partition by 就可以完美的实现,这里记录下,本人胆子比较小以至于例子中的表名和字段名都是瞎写的,嘻嘻,以后再遇到类似问题就直接抄了,哈哈。(partition by和group by都是分
组,但是感觉前者要比后者作用更灵活)
- 1 SELECT column1,
- 2 column2,
- 3 row_number() over(partition by column2 order by column2 desc) column2_seq
- 4 FROM talbe_name a
- 5 WHERE column1 in ('222222222222222C', '000000000000000C');
- 6
- 7 --效果不错噢
- 8 /*
- 9 000000000000000C 100000002527 1
- 10 000000000000000C 100000002526 2
- 11
- 12 222222222222222C 100002456768 1
- 13 222222222222222C 100002456767 2
- 14 222222222222222C 100002456766 3
- 15 222222222222222C 100002456765 4
- 16 222222222222222C 100002456764 5
- 17 222222222222222C 100002456762 6
- 18 222222222222222C 100002456761 7
- 19 222222222222222C 100002390482 8
- 20 */