添加开单记录表升单类型字段.sql
4.33 KB
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
97
-- ============================================
-- 为开单记录表添加升单类型字段
-- ============================================
-- 说明:此脚本为开单记录表添加升单类型标记字段,用于标识再次开单时包含的品项类型
--
-- 字段说明:
-- 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;