公司系統升級的時候需要數據遷移,遇到一個問題:新表的數據結構和舊表異構,舊表是流水號,新表是聯合主鍵(業務號碼+業務號碼序號) 最後發現用視窗函數 row_number() + partition by 就可以完美的實現,這裡記錄下,本人膽子比較小以至於例子中的表名和欄位名都是瞎寫的,嘻嘻,以後再遇 ...
公司系統升級的時候需要數據遷移,遇到一個問題:新表的數據結構和舊表異構,舊表是流水號,新表是聯合主鍵(業務號碼+業務號碼序號)
最後發現用視窗函數 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 */