这段 SQL 代码用于将数据导入名为 'temp_lgl_sx_dev_charge_result_sheet2' 的表中。

首先,代码使用 CREATE TABLE 语句创建了一个名为 'temp_lgl_sx_dev_charge_result_sheet2' 的表。该表包含以下列:

  • 'month_id':月份标识符
  • 'prov_part':省份标识符
  • 'pro_type':产品类型标识符
  • 'user_num':用户数量,如果为空则为 0
  • 'innet_num':入网数量,如果为空则为 0
  • 'acct_num':账户数量,如果为空则为 0
  • 'm_fee':月费用,如果为空则为 0
  • 'total_fee':总费用,如果为空则为 0
  • 'ord_id3':订单 ID 标识符

然后,使用 SELECT 语句从其他表中选择数据并插入到 'temp_lgl_sx_dev_charge_result_sheet2' 表中。具体的选择条件如下:

  • 选择 'c.month_id'、'c.prov_part'、'c.pro_type' 列
  • 选择 'nvl(a.user_num, 0)'、'nvl(a.innet_num, 0)'、'nvl(a.acct_num, 0)'、'CAST(nvl(a.m_fee, 0) AS Decimal(20, 4)) / 100'、'CAST(nvl(a.total_fee, 0) AS Decimal(20, 4)) / 100'、'CAST(c.m_fee AS Decimal(20, 4)) / 100'、'CAST(c.total_fee AS Decimal(20, 4)) / 100' 列
  • 使用 CASE 表达式根据 'c.prov_part' 的值来确定 'ord_id3' 的值:
    • 如果 'c.prov_part' 等于 '全国',则 'ord_id3' 为 0
    • 如果 'c.prov_part' 等于 '北10',则 'ord_id3' 为 0.1
    • 如果 'c.prov_part' 等于 '南21',则 'ord_id3' 为 0.2
    • 否则,'ord_id3' 为 'b.ord_id3' 的值
  • 选择 'b.ord_id3' 列

接下来,使用 LEFT JOIN 将 'temp_lgl_sx_dev_charge_result' 表与 'DIM_PROV_ORD' 表和 'temp_lgl_sx_dev_result' 表进行连接。连接条件如下:

  • 'temp_lgl_sx_dev_charge_result' 表的 'prov_part' 列与 'DIM_PROV_ORD' 表的 'prov_desc' 列进行连接
  • 'temp_lgl_sx_dev_charge_result' 表的 'month_id' 列与 'temp_lgl_sx_dev_result' 表的 'month_id' 列进行连接
  • 'temp_lgl_sx_dev_charge_result' 表的 'prov_part' 列与 'temp_lgl_sx_dev_result' 表的 'prov_part' 列进行连接
  • 'temp_lgl_sx_dev_charge_result' 表的 'pro_type' 列与 'temp_lgl_sx_dev_result' 表的 'pro' 列进行连接

最后,在连接后的结果上应用 WHERE 子句,只选择 'month_id' 等于 '${v_month}' 的行,并按照 CASE 表达式的结果进行排序。

总体来说,这段代码的目的是将多个表中的数据根据一定的条件进行连接和筛选,并将结果插入到一个新的表中。

SQL 代码分析:将数据导入 temp_lgl_sx_dev_charge_result_sheet2 表

原文地址: https://www.cveoy.top/t/topic/qhno 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录