在plsql中表nsxx里面有字段month、tax_amount、corp、tax_type其中tax_amount为month的税额累计额tax_type为税种corp为企业但month不是每个月都有如没有应取离它最近一个月的数据请问如何用sql查询语句统计2022年1月至2023年1月每个月的tax_amount的加总额
可以使用以下查询语句:
SELECT TO_CHAR(add_months(to_date('2022-01-01', 'yyyy-mm-dd'), level-1), 'yyyy-mm') AS month,
SUM(tax_amount) AS total_tax_amount
FROM nsxx
WHERE tax_type = '税种' AND corp = '企业' AND
add_months(to_date('2022-01-01', 'yyyy-mm-dd'), level-1) <= to_date('2023-01-01', 'yyyy-mm-dd') AND
add_months(to_date('2022-01-01', 'yyyy-mm-dd'), level-1) >= to_date('2022-01-01', 'yyyy-mm-dd') AND
(month IS NULL OR month = TO_CHAR(add_months(to_date('2022-01-01', 'yyyy-mm-dd'), level-1), 'yyyy-mm'))
CONNECT BY LEVEL <= 12
GROUP BY TO_CHAR(add_months(to_date('2022-01-01', 'yyyy-mm-dd'), level-1), 'yyyy-mm')
ORDER BY month;
解析:
- 使用 CONNECT BY LEVEL 和 add_months 函数来生成 2022年1月至2023年1月的月份序列。
- 使用 TO_CHAR 函数将每个月的日期转换为月份字符串。
- 在 WHERE 条件中过滤出符合条件的记录,包括:税种、企业、时间范围、月份为空或等于当前月份的记录。
- 使用 GROUP BY 和 SUM 函数来统计每个月的税额累计额。
原文地址: http://www.cveoy.top/t/topic/ICr 著作权归作者所有。请勿转载和采集!