-- ============================================
-- 为开单扣减信息表（lq_kd_deductinfo）添加开单时间字段
-- ============================================
-- 说明：此脚本为开单扣减信息表添加开单时间字段，用于存储对应的开单时间
-- 
-- 字段说明：
-- F_BillingTime：开单时间，用于存储对应的开单记录的开单时间（kdrq）
-- 
-- 业务含义：
-- - 开单时间用于记录储扣对应的开单时间，便于统计和查询
-- - 开单时间来源于开单记录表（lq_kd_kdjlb）的 kdrq 字段
-- 
-- 注意事项：
-- - 字段类型为DATETIME，允许为NULL（历史数据可能没有开单时间）
-- - 字段位置：放在 F_BillingId 字段之后
-- - 创建后需要更新历史数据，从开单记录表中获取对应的开单时间

-- ============================================
-- 1. 添加开单时间字段
-- ============================================
ALTER TABLE `lq_kd_deductinfo` 
ADD COLUMN `F_BillingTime` DATETIME NULL COMMENT '开单时间' AFTER `F_BillingId`;

-- ============================================
-- 2. 更新历史数据：从开单记录表中获取开单时间
-- ============================================
UPDATE `lq_kd_deductinfo` deduct
INNER JOIN `lq_kd_kdjlb` billing ON deduct.F_BillingId = billing.F_Id
SET deduct.F_BillingTime = billing.kdrq
WHERE deduct.F_BillingTime IS NULL 
  AND billing.kdrq IS NOT NULL;

-- ============================================
-- 3. 验证更新结果
-- ============================================
-- 查看更新后的统计信息
SELECT 
    COUNT(*) as TotalCount,
    COUNT(F_BillingTime) as HasBillingTimeCount,
    COUNT(*) - COUNT(F_BillingTime) as NullBillingTimeCount
FROM lq_kd_deductinfo;

-- 查看有开单时间但开单记录不存在的记录（数据异常检查）
SELECT 
    deduct.F_Id,
    deduct.F_BillingId,
    deduct.F_BillingTime
FROM lq_kd_deductinfo deduct
LEFT JOIN lq_kd_kdjlb billing ON deduct.F_BillingId = billing.F_Id
WHERE deduct.F_BillingTime IS NOT NULL 
  AND billing.F_Id IS NULL
LIMIT 10;

