<?xml version="1.0" encoding="UTF-8" ?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="reportFeeServiceDaoImpl">
|
<select id="repostInFee" resultType="java.util.Map">
|
SELECT
|
pfd.community_id,
|
td.name AS '费用类型名称',
|
YEAR(pfd.create_time) AS '统计周期', -- 统计周期只显示年份
|
pf.fee_type_cd AS '费用类型编码',
|
-- 往年年度统计
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2021-01-01' AND pfd.end_time >= '2020-01-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, '2020-12-31'),
|
GREATEST(pfd.start_time, '2020-01-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2020年收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2022-01-01' AND pfd.end_time >= '2021-01-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, '2021-12-31'),
|
GREATEST(pfd.start_time, '2021-01-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2021年收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2023-01-01' AND pfd.end_time >= '2022-01-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, '2022-12-31'),
|
GREATEST(pfd.start_time, '2022-01-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2022年收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2024-01-01' AND pfd.end_time >= '2023-01-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, '2023-12-31'),
|
GREATEST(pfd.start_time, '2023-01-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2023年收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-01-01' AND pfd.end_time >= '2024-01-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, '2024-12-31'),
|
GREATEST(pfd.start_time, '2024-01-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2024年收费金额(元)',
|
|
-- 今年按月统计(2025年)
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-02-01'
|
AND pfd.end_time >= '2025-01-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-01-01')),
|
GREATEST(pfd.start_time, '2025-01-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年1月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-03-01'
|
AND pfd.end_time >= '2025-02-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-02-01')),
|
GREATEST(pfd.start_time, '2025-02-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年2月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-04-01'
|
AND pfd.end_time >= '2025-03-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-03-01')),
|
GREATEST(pfd.start_time, '2025-03-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年3月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-05-01'
|
AND pfd.end_time >= '2025-04-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-04-01')),
|
GREATEST(pfd.start_time, '2025-04-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年4月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-06-01'
|
AND pfd.end_time >= '2025-05-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-05-01')),
|
GREATEST(pfd.start_time, '2025-05-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年5月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-07-01'
|
AND pfd.end_time >= '2025-06-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-06-01')),
|
GREATEST(pfd.start_time, '2025-06-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年6月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-08-01'
|
AND pfd.end_time >= '2025-07-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-07-01')),
|
GREATEST(pfd.start_time, '2025-07-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年7月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-09-01'
|
AND pfd.end_time >= '2025-08-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-08-01')),
|
GREATEST(pfd.start_time, '2025-08-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年8月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-10-01'
|
AND pfd.end_time >= '2025-09-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-09-01')),
|
GREATEST(pfd.start_time, '2025-09-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年9月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-11-01'
|
AND pfd.end_time >= '2025-10-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-10-01')),
|
GREATEST(pfd.start_time, '2025-10-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年10月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2025-12-01'
|
AND pfd.end_time >= '2025-11-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-11-01')),
|
GREATEST(pfd.start_time, '2025-11-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年11月收费金额(元)',
|
SUM(
|
CASE
|
WHEN pfd.start_time < '2026-01-01'
|
AND pfd.end_time >= '2025-12-01'
|
THEN pfd.received_amount *
|
DATEDIFF(
|
LEAST(pfd.end_time, LAST_DAY('2025-12-01')),
|
GREATEST(pfd.start_time, '2025-12-01')
|
) / DATEDIFF(pfd.end_time, pfd.start_time)
|
ELSE 0
|
END
|
) AS '2025年12月收费金额(元)',
|
|
SUM(pfd.received_amount) AS '总收费金额(元)'
|
FROM
|
pay_fee_detail pfd
|
LEFT JOIN pay_fee pf ON pf.fee_id = pfd.fee_id
|
LEFT JOIN t_dict td ON td.table_name = "pay_fee_config"
|
AND td.table_columns = "fee_type_cd"
|
AND td.status_cd = pf.fee_type_cd
|
WHERE
|
pfd.status_cd = '0'
|
-- AND pfd.community_id = '2025062600070012'
|
GROUP BY
|
td.name,
|
pf.fee_type_cd,
|
pfd.community_id,
|
YEAR(pfd.create_time) -- 按年份分组
|
ORDER BY
|
td.name,
|
YEAR(pfd.create_time);
|
|
</select>
|
</mapper>
|