报表统计sql应该如何写?

一.场景

如果你遇到如下的场景,查询某个人的补贴汇总情况,我们该如何通过sql完成任务呢?
报表统计sql应该如何写?_第1张图片

二.思路

思路1:

将总计行最后通过union all 拼接起来

思路2:

使用数据库自带的函数with rollup,思路二也是别人提供的

三.具体解决方法

思路1具体方法

在此不写具体的字段和表名,参考着可以将汉字补充为自己的字段或者表名

select * from (

( select 身份证,服务类型,服务项目,单次补贴(公司),累积补贴(公司),单次补贴(其他),累积补贴(其他) from 统计表  ) 

 union  all 
(
select 身份证,'' 服务类型, '总计' 服务项目,'/' 单次补贴(公司),sum(累积补贴) 累积补贴(公司),'/' 单次补贴(其他), sum(累积补贴) 累积补贴(其他)  from  统计表 group by  fd_card) 

) t3 order by   t3.服务类型,t3.服务项目

思路2具体方法

select * from (

  select 身份证,服务类型,服务项目,ifnull(服务类型,'总计') 服务项目,ifnull(服务类型,'/') 单次补贴(公司),sum(累积补贴(公司)) 累积补贴(公司),ifnull(服务类型,'/') 单次补贴(其他),累积补贴(其他),sum(累积补贴) 累积补贴 from 统计表 
    
 group by 身份证,服务类型 WITH ROLLUP  order by 身份证,服务类型,服务项目

) t3 

针对思路2注意:ifnull(服务类型,‘总计’),ifnull函数的具体字段可以看自己查询的语句的具体为空的字段是哪个字段,可自行替换。查看为空的sql就不再写了,将使用ifnull函数的字段还原成原来的字段即可。

你可能感兴趣的:(MySql,报表统计,sql,数据库,database,报表统计)