-- ============================================ -- 为开单记录表添加升单类型字段 -- ============================================ -- 说明:此脚本为开单记录表添加升单类型标记字段,用于标识再次开单时包含的品项类型 -- -- 字段说明: -- 1. F_UpgradeLifeBeauty:升生美(再次开单时,包含生美品项的订单) -- 2. F_UpgradeTechBeauty:升科美(再次开单时,包含科美品项的订单) -- 3. F_UpgradeMedicalBeauty:升医美(再次开单时,包含医美品项的订单) -- -- 业务含义: -- - 升单:已经开过会员再次消费属于升单 -- - 这三个字段用于标记升单中是否包含对应类型的品项(生美、科美、医美) -- -- 注意事项: -- - 字段类型为VARCHAR(10),可存储"是"/"否"或其他标记值 -- - 所有字段允许为NULL,因为历史数据可能没有这些标记 -- - 字段位置:放在 F_SupplementAmount 之后 -- ============================================ -- 1. lq_kd_kdjlb(开单记录表) - 添加升单类型字段 -- ============================================ ALTER TABLE lq_kd_kdjlb ADD COLUMN F_UpgradeLifeBeauty VARCHAR(10) NULL COMMENT '升生美(再次开单时,包含生美品项的订单)' AFTER F_SupplementAmount, ADD COLUMN F_UpgradeTechBeauty VARCHAR(10) NULL COMMENT '升科美(再次开单时,包含科美品项的订单)' AFTER F_UpgradeLifeBeauty, ADD COLUMN F_UpgradeMedicalBeauty VARCHAR(10) NULL COMMENT '升医美(再次开单时,包含医美品项的订单)' AFTER F_UpgradeTechBeauty; -- ============================================ -- 2. 验证字段创建 -- ============================================ -- 验证 lq_kd_kdjlb 表 -- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_COMMENT -- FROM INFORMATION_SCHEMA.COLUMNS -- WHERE TABLE_NAME = 'lq_kd_kdjlb' -- AND (COLUMN_NAME = 'F_UpgradeLifeBeauty' -- OR COLUMN_NAME = 'F_UpgradeTechBeauty' -- OR COLUMN_NAME = 'F_UpgradeMedicalBeauty'); -- ============================================ -- 3. 业务逻辑说明(供参考) -- ============================================ -- 判断逻辑: -- 1. 判断是否为升单:查询该会员(kdhy)是否有历史开单记录 -- 2. 判断是否包含生美:查询该开单的品项明细(lq_kd_pxmx)中是否有品项类型(lq_xmzl.qt2)为"生美"的记录 -- 3. 判断是否包含科美:查询该开单的品项明细中是否有品项类型为"科美"的记录 -- 4. 判断是否包含医美:查询该开单的品项明细中是否有品项类型为"医美"的记录 -- -- 示例SQL(判断升单并标记品项类型): -- UPDATE lq_kd_kdjlb kdjlb -- SET -- F_UpgradeLifeBeauty = CASE -- WHEN EXISTS ( -- SELECT 1 FROM lq_kd_kdjlb kd2 -- WHERE kd2.kdhy = kdjlb.kdhy -- AND kd2.F_Id != kdjlb.F_Id -- AND kd2.kdrq < kdjlb.kdrq -- ) AND EXISTS ( -- SELECT 1 FROM lq_kd_pxmx pxmx -- INNER JOIN lq_xmzl xmzl ON pxmx.px = xmzl.F_Id -- WHERE pxmx.glkdbh = kdjlb.F_Id -- AND pxmx.F_IsEffective = 1 -- AND xmzl.qt2 = '生美' -- ) THEN '是' -- ELSE '否' -- END, -- F_UpgradeTechBeauty = CASE -- WHEN EXISTS ( -- SELECT 1 FROM lq_kd_kdjlb kd2 -- WHERE kd2.kdhy = kdjlb.kdhy -- AND kd2.F_Id != kdjlb.F_Id -- AND kd2.kdrq < kdjlb.kdrq -- ) AND EXISTS ( -- SELECT 1 FROM lq_kd_pxmx pxmx -- INNER JOIN lq_xmzl xmzl ON pxmx.px = xmzl.F_Id -- WHERE pxmx.glkdbh = kdjlb.F_Id -- AND pxmx.F_IsEffective = 1 -- AND xmzl.qt2 = '科美' -- ) THEN '是' -- ELSE '否' -- END, -- F_UpgradeMedicalBeauty = CASE -- WHEN EXISTS ( -- SELECT 1 FROM lq_kd_kdjlb kd2 -- WHERE kd2.kdhy = kdjlb.kdhy -- AND kd2.F_Id != kdjlb.F_Id -- AND kd2.kdrq < kdjlb.kdrq -- ) AND EXISTS ( -- SELECT 1 FROM lq_kd_pxmx pxmx -- INNER JOIN lq_xmzl xmzl ON pxmx.px = xmzl.F_Id -- WHERE pxmx.glkdbh = kdjlb.F_Id -- AND pxmx.F_IsEffective = 1 -- AND xmzl.qt2 = '医美' -- ) THEN '是' -- ELSE '否' -- END -- WHERE kdjlb.F_IsEffective = 1;