37 lines
965 B
MySQL
37 lines
965 B
MySQL
|
|
-- crm_channel_expansion.channel_code data fix:
|
||
|
|
-- normalize all existing channel codes to the current system rule
|
||
|
|
--
|
||
|
|
-- Rule:
|
||
|
|
-- QD-YYYYMMDD-序号(按记录创建日期、创建时间、ID排序生成)
|
||
|
|
--
|
||
|
|
-- Notes:
|
||
|
|
-- 1) all rows are recalculated using current rule
|
||
|
|
-- 2) rows are ordered by created_at asc, id asc within each day
|
||
|
|
-- 3) script is idempotent: rerun yields the same result
|
||
|
|
|
||
|
|
begin;
|
||
|
|
|
||
|
|
with ranked_all as (
|
||
|
|
select
|
||
|
|
id,
|
||
|
|
'QD-' || to_char(created_at::date, 'YYYYMMDD') || '-' ||
|
||
|
|
lpad(seq_no::text, 3, '0') as generated_code
|
||
|
|
from (
|
||
|
|
select
|
||
|
|
id,
|
||
|
|
created_at,
|
||
|
|
row_number() over (
|
||
|
|
partition by created_at::date
|
||
|
|
order by created_at asc, id asc
|
||
|
|
) as seq_no,
|
||
|
|
channel_code
|
||
|
|
from crm_channel_expansion
|
||
|
|
) ranked_all
|
||
|
|
)
|
||
|
|
update crm_channel_expansion c
|
||
|
|
set channel_code = ra.generated_code
|
||
|
|
from ranked_all ra
|
||
|
|
where c.id = ra.id;
|
||
|
|
|
||
|
|
commit;
|