Blame view

项目文档相关/sql/科美业绩与科技部老师开单业绩差异核对.sql 4.57 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
97
98
99
100
101
102
103
104
105
106
  -- ============================================================
  -- 科美业绩(1163803) vs 科技部老师开单业绩(1165702.63) 差异核对
  -- 理论上两者应相等,差异约 1899.63。本脚本用于排查原因,不修改任何数据。
  -- ============================================================
  
  -- 1) 口径说明
  -- 科美业绩:一般指「开单品项明细」中 品项分类=科美  F_ActualPrice 之和(或来自台账选科美时的汇总)
  -- 科技部老师开单业绩:lq_kd_kjbsyj 表的 kjblsyj 之和
  
  -- 2) 同一时间范围下两数分别多少(请按需修改时间)
  SET @start = '2026-01-01 00:00:00';
  SET @end   = '2026-01-31 23:59:59';
  
  -- 2.1 科美业绩:按开单品项明细,品项分类=科美,有效开单+有效明细
  SELECT 
      '科美业绩-按品项明细(pxmx.F_ItemCategory=科美)' AS 口径,
      COALESCE(SUM(px.F_ActualPrice), 0) AS 金额
  FROM lq_kd_pxmx px
  INNER JOIN lq_kd_kdjlb kd ON px.glkdbh = kd.F_Id AND kd.F_IsEffective = 1
  WHERE px.F_IsEffective = 1
    AND (px.F_ItemCategory = '科美' OR EXISTS (SELECT 1 FROM lq_xmzl zl WHERE zl.F_Id = px.px AND zl.F_IsEffective = 1 AND zl.qt2 = '科美'))
    AND kd.kdrq >= @start
    AND kd.kdrq <= @end;
  
  -- 2.2 科技部老师开单业绩:lq_kd_kjbsyj 全表汇总(当前系统统计方式,未过滤科美)
  SELECT 
      '科技部老师开单业绩-全表kjblsyj' AS 口径,
      COALESCE(SUM(CAST(NULLIF(TRIM(k.kjblsyj), '') AS DECIMAL(18,2))), 0) AS 金额
  FROM lq_kd_kjbsyj k
  INNER JOIN lq_kd_kdjlb kd ON k.glkdbh = kd.F_Id AND kd.F_IsEffective = 1
  WHERE k.F_IsEffective = 1
    AND k.yjsj >= @start
    AND k.yjsj <= @end
    AND k.kjblsyj IS NOT NULL
    AND TRIM(k.kjblsyj) != ''
    AND TRIM(k.kjblsyj) != '0';
  
  -- 2.3 科技部老师开单业绩:仅 F_ItemCategory='科美'(若只统计科美,应与科美业绩一致)
  SELECT 
      '科技部老师开单业绩-仅科美F_ItemCategory' AS 口径,
      COALESCE(SUM(CAST(NULLIF(TRIM(k.kjblsyj), '') AS DECIMAL(18,2))), 0) AS 金额
  FROM lq_kd_kjbsyj k
  INNER JOIN lq_kd_kdjlb kd ON k.glkdbh = kd.F_Id AND kd.F_IsEffective = 1
  WHERE k.F_IsEffective = 1
    AND k.F_ItemCategory = '科美'
    AND k.yjsj >= @start
    AND k.yjsj <= @end
    AND k.kjblsyj IS NOT NULL
    AND TRIM(k.kjblsyj) != ''
    AND TRIM(k.kjblsyj) != '0';
  
  -- 3) 差异来源:科技部表里「非科美」或「品项分类为空」的金额(多出来的部分)
  SELECT 
      '科技部-非科美或空分类金额' AS 口径,
      COALESCE(SUM(CAST(NULLIF(TRIM(k.kjblsyj), '') AS DECIMAL(18,2))), 0) AS 金额
  FROM lq_kd_kjbsyj k
  INNER JOIN lq_kd_kdjlb kd ON k.glkdbh = kd.F_Id AND kd.F_IsEffective = 1
  WHERE k.F_IsEffective = 1
    AND k.yjsj >= @start
    AND k.yjsj <= @end
    AND (k.F_ItemCategory IS NULL OR k.F_ItemCategory = '' OR k.F_ItemCategory != '科美')
    AND k.kjblsyj IS NOT NULL
    AND TRIM(k.kjblsyj) != ''
    AND TRIM(k.kjblsyj) != '0';
  
  -- 4) 科美品项有明细但科技部无业绩 / 科技部有业绩但品项非科美(明细级抽查)
  -- 4.1 科美品项明细对应的科技部业绩合计(按开单明细ID关联)
  SELECT 
      '按开单明细关联-科美品项对应kjbsyj之和' AS 口径,
      COALESCE(SUM(CAST(NULLIF(TRIM(k.kjblsyj), '') AS DECIMAL(18,2))), 0) AS 金额
  FROM lq_kd_pxmx px
  INNER JOIN lq_kd_kdjlb kd ON px.glkdbh = kd.F_Id AND kd.F_IsEffective = 1
  LEFT JOIN lq_kd_kjbsyj k ON k.F_kdpxid = px.F_Id AND k.F_IsEffective = 1
  WHERE px.F_IsEffective = 1
    AND px.F_ItemCategory = '科美'
    AND kd.kdrq >= @start
    AND kd.kdrq <= @end
    AND k.kjblsyj IS NOT NULL
    AND TRIM(k.kjblsyj) != ''
    AND TRIM(k.kjblsyj) != '0';
  
  -- 4.2 科美品项明细的 ActualPrice 之和(与 4.1 同范围,用于对比)
  SELECT 
      '科美品项ActualPrice之和(同范围)' AS 口径,
      COALESCE(SUM(px.F_ActualPrice), 0) AS 金额
  FROM lq_kd_pxmx px
  INNER JOIN lq_kd_kdjlb kd ON px.glkdbh = kd.F_Id AND kd.F_IsEffective = 1
  WHERE px.F_IsEffective = 1
    AND (px.F_ItemCategory = '科美' OR EXISTS (SELECT 1 FROM lq_xmzl zl WHERE zl.F_Id = px.px AND zl.F_IsEffective = 1 AND zl.qt2 = '科美'))
    AND kd.kdrq >= @start
    AND kd.kdrq <= @end;
  
  -- 5) 查看 lq_kd_kjbsyj  F_ItemCategory 的分布(是否有空或非科美)
  SELECT 
      COALESCE(k.F_ItemCategory, '(空)') AS 品项分类,
      COUNT(*) AS 条数,
      COALESCE(SUM(CAST(NULLIF(TRIM(k.kjblsyj), '') AS DECIMAL(18,2))), 0) AS 金额合计
  FROM lq_kd_kjbsyj k
  INNER JOIN lq_kd_kdjlb kd ON k.glkdbh = kd.F_Id AND kd.F_IsEffective = 1
  WHERE k.F_IsEffective = 1
    AND k.yjsj >= @start
    AND k.yjsj <= @end
    AND k.kjblsyj IS NOT NULL
    AND TRIM(k.kjblsyj) != ''
    AND TRIM(k.kjblsyj) != '0'
  GROUP BY COALESCE(k.F_ItemCategory, '(空)');