# 当天应该换单数统计差异修复计划

## 差异现象
- 明细查询统计考核时间为5月1日的订单：6951条
- 汇总SQL统计5月1日的「当天应该换单数」：5895条
- 差值：1056条，说明汇总逻辑多了限制条件导致少统计

## 根因分析（最终定位）
用户确认过滤条件调整无效，问题根源在**联表逻辑和CTE数据完整性**：
1. **OrderAssessment关联FormFirstScan问题**：左关联FormFirstScan时，若交接单无扫描记录，FirstScanTime_UTC5为null，导致考核基准时间计算异常
2. **DistinctDates日期不全**：AllDates只取了ReceiptDate、LabelRetrievedDate、FirstSuccessDate和扫描日期，没有包含考核时间的日期，导致考核时间的日期不在DistinctDates里，Cross JOIN时丢失匹配
3. **OrderFullInfo数据丢失**：OrderAssessment和OrderScanStatus左关联时，有没有NeutralWaybillNumber匹配不上的情况，导致考核时间丢失

## 修复方案
### 正确统计规则（用户明确）
「当天应该换单数」= 满足以下所有条件的订单总和：
1. 有考核时间（AssessmentTime IS NOT NULL）
2. 标签率≥80%
3. 满足以下两个条件任意一个：
   a. 考核基准日期 = 统计当天日期
   b. 考核截止日期 = 统计当天日期
> 最终统计结果 = 明细中考核基准日期是当天的订单数 + 考核截止日期是当天的订单数

## 执行步骤
1. 修复DistinctDates日期不全问题：在AllDates中增加考核时间的日期，确保所有考核日期都被包含
2. 调整汇总SQL的「当天应该换单数」统计逻辑：
   - 条件改为：`(DATE(ofi.AssessmentBaseTime) = dd.日期 OR DATE(ofi.AssessmentTime) = dd.日期)`
   - 保留`ofi.AssessmentTime IS NOT NULL`和`ofi.LabelRate >= 0.8`条件
3. 同步更新明细查询的验证注释，匹配最新逻辑
4. 验证5月1日数据：汇总统计结果 = 明细中考核基准日期是5月1日的count + 考核截止日期是5月1日的count

## 验证方法
修复后：
1. 运行汇总SQL，获取5月1日的「当天应该换单数」
2. 运行明细SQL分别统计：
   a. 考核基准日期是5月1日的订单数：`WHERE DATE(oa.考核基准时间_UTC5) = '2026-05-01' AND oa.交接单标签率 >= 0.8 AND oa.考核时间 IS NOT NULL`
   b. 考核截止日期是5月1日的订单数：`WHERE DATE(oa.考核时间) = '2026-05-01' AND oa.交接单标签率 >= 0.8 AND oa.考核时间 IS NOT NULL`
3. 汇总结果 = a + b，数据完全一致则修复完成
