You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用T-SQL识别跨分支迁移客户的数据匹配异常

T-SQL实现02到04分支客户迁移数据一致性校验

基础信息

客户主表为customers,字段说明:

  • branch:分支编号
  • cust_code:客户编号
  • post_code:邮编
  • email:电子邮箱
  • tel:固定电话
  • mob:手机号码

迁移规则要求:客户从02分支迁移到04分支后,仅cust_code重新生成,其余字段必须和原记录完全一致。已有新旧cust_code的完整映射关系,假设存储映射的表为cust_code_mapping,包含old_cust_code(02分支原客户编号)、new_cust_code(04分支新客户编号)两个字段,实际使用时替换为你环境中映射表的真实名称即可。

校验逻辑说明

逐对关联新旧客户记录,对比除cust_code外的所有字段,只要有一个字段值不一致就标记为异常:

  • 所有非cust_code字段完全一致:校验通过
  • 任意字段值存在差异:识别为异常,标记具体差异字段
  • 示例验证:
    • 02分支cust_code=1234与04分支cust_code=1432字段全匹配,校验通过
    • 02分支cust_code=8528与04分支cust_code=6132的post_code字段不一致,标记异常
    • 02分支cust_code=8523与04分支cust_code=7463的email字段不一致,标记异常

校验查询语句

SELECT
    map.old_cust_code AS 原02分支客户号,
    map.new_cust_code AS 新04分支客户号,
    CONCAT_WS(';',
        CASE WHEN c2.post_code <> c4.post_code THEN 'post_code(邮编)不一致' END,
        CASE WHEN c2.email <> c4.email THEN 'email(邮箱)不一致' END,
        CASE WHEN c2.tel <> c4.tel THEN 'tel(固话)不一致' END,
        CASE WHEN c2.mob <> c4.mob THEN 'mob(手机号)不一致' END
    ) AS 差异字段说明
FROM cust_code_mapping map
INNER JOIN customers c2
    ON c2.branch = '02' AND c2.cust_code = map.old_cust_code
INNER JOIN customers c4
    ON c4.branch = '04' AND c4.cust_code = map.new_cust_code
WHERE
    c2.post_code <> c4.post_code
    OR c2.email <> c4.email
    OR c2.tel <> c4.tel
    OR c2.mob <> c4.mob

兼容NULL值说明:如果业务字段允许为空,SQL Server 2022及以上版本可以把<>替换为IS DISTINCT FROM,低版本可以用ISNULL(c2.字段名,'') <> ISNULL(c4.字段名,'')的写法,避免NULL值对比漏判。
如果需要导出全量配对结果(含校验通过的记录),删除WHERE子句即可,校验通过的记录差异字段说明列会返回空值。

内容的提问来源于stack exchange,提问作者noddyrams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:48:34