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
-- ============================================================
-- 规下货运量 / 规下周转量 计算口径(2026-09-04 业务确认)
-- ------------------------------------------------------------
-- 用到哪些表(中文名 = 用户平时叫的名字,括号内是程序里存的表名,一般不用管):
--   ①《道路货物运输月度生产情况表》= 交企统H203-2表,企业级月报
--      (库表名 h2032_enterprise_monthly)——里面的企业都是“规上企业”,
--      把各市州所有企业的“货运量、货物周转量”加起来,就是“规上”合计。
--      注意:该表的货运量单位是“吨”、周转量单位是“吨公里”,
--      而报表单位是“万吨、万吨公里”,所以要除以 10000。
--   ②《货运量周转量表》(库表名 freight_turnover_import)——全省和各市州的
--      “全口径”货运量、周转量(规上+规下都算在内),单位已经是“万吨/万吨公里”,
--      里面还有一行“湖北省”用来核对全省合计,以及去年同月列(last_*)。
--   ③《规上规下拆分表》(库表名 scale_split_transport)——把拆分结果存下来的表
--      (规上/规下/合计,含排名、同比)。目前导入的拆分模板只有“周转量”,
--      所以该表周转量三列有数、货运量三列为空;货运量拆分如需落表,
--      用查询 3(默认不执行)回填。
-- 核心公式(分市州、每个月都一样):
--   规上货运量(万吨) = ①表货运量合计 ÷ 10000
--   全口径货运量(万吨) = ②表当月货运量
--   规下货运量(万吨) = 全口径 − 规上
--   周转量同理(规下周转量 = ②表当月周转量 − ①表周转量合计 ÷ 10000)
-- 全省校验:17 个市州相加 = “湖北省”行 = 汇总表《“ 货运”页》全省数
--   (2026-07:货运量 16285.71 万吨、规上 3754.78 万吨、规下 12530.93 万吨)
-- ============================================================
 
-- =====================================================================
-- 查询 1:分市州 “规上 / 全口径 / 规下” 货运量、周转量(2026-07 示例)
--   把 '2026-07' 换成别的月份,把 m07 换成对应月号(m01~m12)即可查其他月。
-- =====================================================================
SELECT m.市州,
       ft.freight_m07  AS 全口径货运量_万吨,
       ROUND(gs.规上货运量_万吨, 4) AS 规上货运量_万吨,
       ROUND(ft.freight_m07 - gs.规上货运量_万吨, 4) AS 规下货运量_万吨,
       ft.turnover_m07 AS 全口径周转量_万吨公里,
       ROUND(gs.规上周转量_万吨公里, 4) AS 规上周转量_万吨公里,
       ROUND(ft.turnover_m07 - gs.规上周转量_万吨公里, 4) AS 规下周转量_万吨公里
FROM (
  SELECT '武汉' AS 市州, '武汉市' AS 表内城市名 UNION ALL SELECT '黄石','黄石市'
  UNION ALL SELECT '十堰','十堰市' UNION ALL SELECT '宜昌','宜昌市'
  UNION ALL SELECT '襄阳','襄阳市' UNION ALL SELECT '鄂州','鄂州市'
  UNION ALL SELECT '荆门','荆门市' UNION ALL SELECT '孝感','孝感市'
  UNION ALL SELECT '荆州','荆州市' UNION ALL SELECT '黄冈','黄冈市'
  UNION ALL SELECT '咸宁','咸宁市' UNION ALL SELECT '随州','随州市'
  UNION ALL SELECT '恩施','恩施州' UNION ALL SELECT '仙桃','仙桃市'
  UNION ALL SELECT '潜江','潜江市' UNION ALL SELECT '天门','天门市'
  UNION ALL SELECT '林区','林区'
) m
LEFT JOIN freight_turnover_import ft -- ②《货运量周转量表》:全口径总量月报
  ON ft.report_period = '2026-07' AND ft.region_name = m.表内城市名
LEFT JOIN (
  SELECT CASE
           WHEN region_code LIKE '4201%' THEN '武汉' WHEN region_code LIKE '4202%' THEN '黄石'
           WHEN region_code LIKE '4203%' THEN '十堰' WHEN region_code LIKE '4205%' THEN '宜昌'
           WHEN region_code LIKE '4206%' THEN '襄阳' WHEN region_code LIKE '4207%' THEN '鄂州'
           WHEN region_code LIKE '4208%' THEN '荆门' WHEN region_code LIKE '4209%' THEN '孝感'
           WHEN region_code LIKE '4210%' THEN '荆州' WHEN region_code LIKE '4211%' THEN '黄冈'
           WHEN region_code LIKE '4212%' THEN '咸宁' WHEN region_code LIKE '4213%' THEN '随州'
           WHEN region_code LIKE '4228%' THEN '恩施' WHEN region_code LIKE '429004%' THEN '仙桃'
           WHEN region_code LIKE '429005%' THEN '潜江' WHEN region_code LIKE '429006%' THEN '天门'
           WHEN region_code LIKE '429021%' THEN '林区' END AS 市州,
         SUM(freight_total) / 10000  AS 规上货运量_万吨,    -- ①表“货运量”合计,吨÷10000→万吨
         SUM(turnover_total) / 10000 AS 规上周转量_万吨公里 -- ①表“周转量”合计,吨公里÷10000→万吨公里
  FROM h2032_enterprise_monthly      -- ①《道路货物运输月度生产情况表》(H203-2,规上企业)
  WHERE report_period = '2026-07'
  GROUP BY 市州
) gs ON gs.市州 = m.市州;
 
-- =====================================================================
-- 查询 2:全省校验(看程序算的全省数对不对)
--   期望值 = 2026-07:规上货运量 3754.78;规上周转量 597278.64;
--            全口径货运量 16285.71(母版 O5);全口径周转量 2181925.71。
-- =====================================================================
SELECT
  (SELECT ROUND(SUM(freight_total)/10000, 4) FROM h2032_enterprise_monthly -- ①表
    WHERE report_period='2026-07' AND (region_code LIKE '42%' OR region_code LIKE '4290%')) AS 全省规上货运量_万吨,
  (SELECT ROUND(SUM(turnover_total)/10000, 4) FROM h2032_enterprise_monthly -- ①表
    WHERE report_period='2026-07' AND (region_code LIKE '42%' OR region_code LIKE '4290%')) AS 全省规上周转量_万吨公里,
  (SELECT freight_m07 FROM freight_turnover_import      -- ②表“湖北省”行
    WHERE report_period='2026-07' AND region_name='湖北省') AS 全省全口径货运量_万吨,
  (SELECT turnover_m07 FROM freight_turnover_import     -- ②表“湖北省”行
    WHERE report_period='2026-07' AND region_name='湖北省') AS 全省全口径周转量_万吨公里;
 
-- =====================================================================
-- 查询 3(可选,默认不执行):把“货运量拆分”回填到《规上规下拆分表》
--   注意:该表现在只有“累计(CUMULATIVE)”口径的周转量行;
--   回填货运量需要先想清楚是“当月”还是“1-月累计”口径,
--   累计口径要先把 1~7 月逐月算出来再加总。确认口径后再放开注释执行。
-- =====================================================================
-- UPDATE scale_split_transport   -- ③《规上规下拆分表》
-- JOIN (查询 1 的结果) d ON d.市州 = 市州名
-- SET above_scale_freight = d.规上货运量_万吨,
--     below_scale_freight = d.规下货运量_万吨,
--     total_freight       = d.全口径货运量_万吨
-- WHERE report_period='2026-07' AND period_type='MONTHLY';