Blame view

项目文档相关/sql/添加开单记录表升单类型字段.sql 4.33 KB
d8035736   “wangming”   Refactor project ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  -- ============================================
  -- 为开单记录表添加升单类型字段
  -- ============================================
  -- 说明:此脚本为开单记录表添加升单类型标记字段,用于标识再次开单时包含的品项类型
  -- 
  -- 字段说明:
  -- 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;