ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

帆软报表如何实现开始时间-结束时间-时间间隔(时,日、周、月、年)分段显示数据

2021-09-16 14:00:44  阅读:1063  来源: 互联网

标签:-% 分段 service sum month 时间 id 帆软


帆软报表如何实现开始时间-结束时间-时间间隔(时,日、周、月、年)分段显示数据

1.效果展示

时间间隔:全部、时、日、周、月、年
在这里插入图片描述

按小时
在这里插入图片描述

按日
在这里插入图片描述

按周

在这里插入图片描述

按月

在这里插入图片描述

按年

在这里插入图片描述

如果这是你想要的,可以继续查看如何实现。

2.实现原理

1)‘时间间隔’是一个下拉框,通过取‘时间间隔’的值,切换‘数据库查询’的数据源,并使用‘关联数据集’关联在一起。

在这里插入图片描述

2)数据库查询中,不同的时间间隔使用不同的日期函数,对时间进行处理。

3)对处理后的时间分组,即可得到

3.添加数据库查询

ds0:查询原始数据,不对日期处理。month_id字段表示时间,mysql数据库时间类型为datetime。

在这里插入图片描述

select 
sum(phone_service),
sum(net_service),
sum(power_service),
sum(amount),
month_id as 时间
from zk_channel_profess
where month_id>='${user_start}' and month_id<='${user_end}'
group by 时间

ds1-h:小时

select 
sum(phone_service),
sum(net_service),
sum(power_service),
sum(amount),
date_format(month_id,'%Y-%m-%d %H') as 时间
from zk_channel_profess
where month_id>='${user_start}' and month_id<='${user_end}'
group by 时间

ds2-d:

select 
sum(phone_service),
sum(net_service),
sum(power_service),
sum(amount),
date_format(month_id,'%Y-%m-%d') as 时间
from zk_channel_profess
where month_id>='${user_start}' and month_id<='${user_end}'
group by 时间

ds3-w:周。concat()拼接函数,DATE_FORMAT()日期格式化函数,date_sub()日期减函数。由于需求,上周5到这周6为一个周。可以调整加减DAY的大小调整周开始星期数,如:+5 DAY,-1 DAY则是从星期1到星期日。

select 
sum(phone_service),
sum(net_service),
sum(power_service),
sum(amount),
concat(DATE_FORMAT(date_sub(month_id, INTERVAL dayofweek(month_id)+ 0 DAY ),'%Y-%m-%d'),'至',DATE_FORMAT(date_sub(month_id, INTERVAL dayofweek(month_id)- 6 DAY ),'%Y-%m-%d')) as 时间
from zk_channel_profess
where month_id>='${user_start}' and month_id<='${user_end}'
group by 时间;

ds4-m:月

select 
sum(phone_service),
sum(net_service),
sum(power_service),
sum(amount),
date_format(month_id,'%Y-%m') as 时间
from zk_channel_profess
where month_id>='${user_start}' and month_id<='${user_end}'
group by 时间

ds5-y:年

select 
sum(phone_service),
sum(net_service),
sum(power_service),
sum(amount),
date_format(month_id,'%Y-%m') as 时间
from zk_channel_profess
where month_id>='${user_start}' and month_id<='${user_end}'
group by 时间

4.添加关联数据集

1)如图顺序点击

在这里插入图片描述

2)如图顺序:①选中‘数据库查询’,②取‘时间间隔’下拉框(timescp)的值,给‘数据库查询’赋值条件,③点刷新按钮出现timescp,给timescp设置默认值为ds0,即查询全部数据的‘数据库查询’。最后点确定

在这里插入图片描述

5.添加时间间隔

时间间隔属性:

在这里插入图片描述

数据字典设置

在这里插入图片描述

6.给单元格赋值

点击Multil给单元格赋值,由于每种类型的month_id都 as 时间,在Multil这里时间就可以根据‘数据库查询’的不同,来给时间赋值。

在这里插入图片描述

单元格赋值
在这里插入图片描述

7.建表语句

CREATE TABLE `zk_channel_profess` (
  `phone_service` int(60) DEFAULT NULL COMMENT '电话',
  `net_service` int(60) DEFAULT NULL COMMENT '网络',
  `power_service` int(60) DEFAULT NULL COMMENT '智能',
  `amount` int(60) DEFAULT NULL COMMENT '总量',
  `month_id` datetime DEFAULT NULL COMMENT,
  KEY `index_name` (`month_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='业务统计'

8.总结

通过关联数据集的方式实现了对时间间隔的不同做出动态筛选。

如果对你有用,欢迎讨论。

标签:-%,分段,service,sum,month,时间,id,帆软
来源: https://blog.csdn.net/weixin_43353088/article/details/120327186

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有