合同成本表添加分类字段.sql 2.44 KB
-- ============================================
-- 为合同成本按月统计表(lq_contract_monthly_cost)添加分类字段
-- ============================================
-- 说明:此脚本为合同成本表添加分类字段,用于按分类统计合同成本
-- 
-- 字段说明:
-- F_Category:分类(冗余字段,便于按分类统计)
-- 
-- 业务含义:
-- - 分类字段用于区分不同类型的合同(如:租门店、员工宿舍、车辆、场所等)
-- - 便于后续按分类统计合同成本
-- 
-- 注意事项:
-- - 字段类型为VARCHAR(100),允许为NULL(历史数据可能没有分类)
-- - 字段位置:放在 F_StoreName 字段之后
-- - 创建后需要更新历史数据,从合同表中获取对应的分类

-- ============================================
-- 1. 添加分类字段
-- ============================================
ALTER TABLE `lq_contract_monthly_cost` 
ADD COLUMN `F_Category` VARCHAR(100) NULL COMMENT '分类(冗余字段,便于按分类统计)' AFTER `F_StoreName`;

-- ============================================
-- 2. 添加分类索引
-- ============================================
ALTER TABLE `lq_contract_monthly_cost` 
ADD INDEX `idx_category` (`F_Category`) COMMENT '分类索引';

-- ============================================
-- 3. 添加分类+月份联合索引
-- ============================================
ALTER TABLE `lq_contract_monthly_cost` 
ADD INDEX `idx_category_month` (`F_Category`, `F_Month`) COMMENT '分类+月份联合索引';

-- ============================================
-- 4. 更新历史数据:从合同表中获取分类
-- ============================================
UPDATE `lq_contract_monthly_cost` cost
INNER JOIN `lq_contract` contract ON cost.F_ContractId = contract.F_Id
SET cost.F_Category = contract.F_Category
WHERE cost.F_Category IS NULL 
  AND contract.F_Category IS NOT NULL;

-- ============================================
-- 5. 验证更新结果
-- ============================================
-- 查看更新后的统计信息
SELECT 
    COUNT(*) as TotalCount,
    COUNT(F_Category) as HasCategoryCount,
    COUNT(*) - COUNT(F_Category) as NullCategoryCount
FROM lq_contract_monthly_cost
WHERE F_IsEffective = 1;

-- 查看各分类的统计信息
SELECT 
    F_Category,
    COUNT(*) as RecordCount,
    SUM(F_MonthlyCost) as TotalCost
FROM lq_contract_monthly_cost
WHERE F_IsEffective = 1
GROUP BY F_Category
ORDER BY TotalCost DESC;