PL/SQL 查询统计:获取指定企业每月税额累计额,并处理缺失月份数据
可以使用子查询和聚合函数来实现:
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;
解释:
-
子查询
m返回一个包含 2022 年 1 月至 12 月的月份列表。 -
左连接
nsxx表,保证即使nsxx表中没有某个月份的数据,该月份也会在结果中出现。 -
使用
COALESCE函数将空值转换为 0,避免某些月份的税额累计额为空时导致结果中缺少该月份的数据。 -
使用
TO_CHAR函数将月份转换为YYYY-MM格式的字符串,便于阅读。 -
使用
GROUP BY子句按月份分组并使用SUM函数计算每个月的税额累计额总和。 -
将
WHERE子句中的'企业名称'替换为实际的企业名称。
原文地址: https://www.cveoy.top/t/topic/lZHR 著作权归作者所有。请勿转载和采集!