ddl-piecework-date.sql 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. -- ============================================
  2. -- 610 计件统计修复 - DDL
  3. -- 目标库:mes_cloud_610
  4. -- 说明:Online DDL 加字段不锁表,UPDATE 回填建议低峰执行
  5. -- ============================================
  6. USE mes_cloud_610;
  7. -- 步骤1:新增 piecework_date 字段(Online DDL,不锁表)
  8. ALTER TABLE mes_product_record
  9. ADD COLUMN piecework_date DATETIME NULL
  10. COMMENT '计件时间(首次加工完成时间)'
  11. AFTER update_date;
  12. -- 步骤2:历史数据回填(只处理 2026-05-01 至今)
  13. -- 用 update_date 作为近似首次完成时间;早于 2026-05-01 的旧数据不回填
  14. UPDATE mes_product_record
  15. SET piecework_date = update_date
  16. WHERE craft = '100000'
  17. AND content NOT IN ('UDF', '')
  18. AND piecework_date IS NULL
  19. AND update_date >= '2026-05-01';
  20. -- 步骤3:验证
  21. SELECT
  22. COUNT(*) AS total_100000,
  23. SUM(CASE WHEN piecework_date IS NOT NULL THEN 1 ELSE 0 END) AS has_piecework_date,
  24. SUM(CASE WHEN content = 'UDF' THEN 1 ELSE 0 END) AS udf_count,
  25. SUM(CASE WHEN content = 'OK' THEN 1 ELSE 0 END) AS ok_count,
  26. SUM(CASE WHEN content = 'NG' THEN 1 ELSE 0 END) AS ng_count
  27. FROM mes_product_record
  28. WHERE craft = '100000';
  29. -- 预期:
  30. -- has_piecework_date = ok_count + ng_count
  31. -- UDF 记录 piecework_date 应为 NULL