可以使用子查询和聚合函数来实现:

SELECT TO_CHAR(TO_DATE(m.month, 'YYYYMM'), 'YYYY-MM') AS month,
       COALESCE(SUM(n.tax_amount), 0) AS total_tax_amount
FROM (
  SELECT '202201' AS month FROM DUAL
  UNION ALL SELECT '202202' FROM DUAL
  UNION ALL SELECT '202203' FROM DUAL
  UNION ALL SELECT '202204' FROM DUAL
  UNION ALL SELECT '202205' FROM DUAL
  UNION ALL SELECT '202206' FROM DUAL
  UNION ALL SELECT '202207' FROM DUAL
  UNION ALL SELECT '202208' FROM DUAL
  UNION ALL SELECT '202209' FROM DUAL
  UNION ALL SELECT '202210' FROM DUAL
  UNION ALL SELECT '202211' FROM DUAL
  UNION ALL SELECT '202212' FROM DUAL
) m
LEFT JOIN nsxx n ON n.month = m.month
WHERE n.corp = '企业名称'
GROUP BY m.month;

解释:

  1. 子查询 m 返回一个包含 2022 年 1 月至 12 月的月份列表。

  2. 左连接 nsxx 表,保证即使 nsxx 表中没有某个月份的数据,该月份也会在结果中出现。

  3. 使用 COALESCE 函数将空值转换为 0,避免某些月份的税额累计额为空时导致结果中缺少该月份的数据。

  4. 使用 TO_CHAR 函数将月份转换为 YYYY-MM 格式的字符串,便于阅读。

  5. 使用 GROUP BY 子句按月份分组并使用 SUM 函数计算每个月的税额累计额总和。

  6. WHERE 子句中的 '企业名称' 替换为实际的企业名称。

PL/SQL 查询统计:获取指定企业每月税额累计额,并处理缺失月份数据

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

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