PostgreSQL报表统计历史12月度数据,无数据补零

  • SQL:统计历史12个月数据,无数据补0
select a.repair_date,
       COALESCE(b.count, 0) as count
  from(
SELECT TO_CHAR(NOW(), 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '1 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '2 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '3 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '4 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '5 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '6 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '7 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '8 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '9 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '10 MONTH', 'YYYY-MM') as repair_date
 union all
SELECT TO_CHAR(NOW() - INTERVAL '11 MONTH', 'YYYY-MM') as repair_date) a
  left join(
select TO_CHAR(repair_time, 'YYYY-MM') as datetime, count(id) as count
  from eoms.obj_dtu_repair
 group by TO_CHAR(repair_time, 'YYYY-MM')) b on a.repair_date= b.datetime
 order by a.repair_date;
  • JPA Repository 接口查询
@Query(value = "上述SQL...",nativeQuery = true)
    List<Object[]> dtuRepairCount();
  • Controller 解析
List<Object[]> list = objDtuRepairRepository.dtuRepairCount();
List<RepairReportModel> repairReportModels = new ArrayList<>();

for (int i = 0; i < list.size(); i++) {
    Object[] col = list.get(i);
    RepairReportModel repairReportModel = new RepairReportModel();

    repairReportModel.setRepairDate((String) col[0]);
    repairReportModel.setCount((BigInteger) col[1]);

    repairReportModels.add(repairReportModel);
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值