unis_crm/sql/archive/fix_channel_code_data_pg17.sql

37 lines
965 B
MySQL
Raw Normal View History

2026-03-26 09:29:55 +00:00
-- 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;