首页 » PHP教程 » php读oracle生成报表技巧_Oracle经由进程 rollup 和 grouping 函数生成报表

php读oracle生成报表技巧_Oracle经由进程 rollup 和 grouping 函数生成报表

访客 2024-11-11 0

扫一扫用手机浏览

文章目录 [+]

记录一次之前事情中利用Oracle的rollup和grouping函数天生报表的经历。

附近放工时上级领导哀求5分钟内要弄数据出来申报请示(每每都是临放工才安排事情的),当时我拿到的模板格式是这样的,如下图:

php读oracle生成报表技巧_Oracle经由进程 rollup 和 grouping 函数生成报表

看到报表构造时首先想到的是要将数据按照部门分组并按照月份做行转列处理。

php读oracle生成报表技巧_Oracle经由进程 rollup 和 grouping 函数生成报表
(图片来自网络侵删)

至于“小计”嘛,大不了可以将前面12个月的列加起来办理(偷个

最大的问题就在于“合计”那一行,一开始想到的是利用group by + union all处理(实现思路:先将各部门数据统计成一个数据集,合计一行作为另一个数据集用group by统计起来,然后再用union all将两边的数据整合到一起)。

这样做虽然可以但觉得不太方便,后来创造Oracle华夏来就供应了一个统计函数rollup来进行这样的统计,下面将结合语句解释一下。

实在rollup说白了便是“列”数据汇总,如果只是纯挚的group by得出来的数据只是普通的分组数据集,如下图:

加上了rollup后数据集下面就会自动加上列的汇总统计行,也便是我们平常看到的合计一行,如下图:

虽然报表内容出来了,但是还短缺了一些东西,再比拟一下模板就会创造在“dept”一列最下该当要有“合计”两字,但最底一行是rollup自动天生出来的要若何将合计加上呢?

在这个时候grouping函数就出来了。

grouping函数有两个返回值1和0。
若返回的是1则表示由于rollup函数所产生的空值对应的信息,返回0表示此行对应的这列参未与rollup函数分组汇总活动。
下面是截取Oracle官方文档的说法:

“Using a single column as its argument, GROUPING returns 1 when it encounters a NULL value created by a ROLLUP or CUBE operation. That is, if the NULL indicates the row is a subtotal,GROUPING returns a 1. Any other type of value, including a stored NULL, returns a 0.”

因此在语句中利用case when + grouping函数对rollup字段进行润色,若返回的是1则给它一个“合计”的中文,0则直接输出以是就涌现了,如下图:

这段东西,末了得出的结果如下图所示:

大功告成。

标签:

相关文章

执业药师试卷代码解码药师职业发展之路

执业药师在药品质量管理、用药安全等方面发挥着越来越重要的作用。而执业药师考试,作为进入药师行业的重要门槛,其试卷代码更是成为了药师...

PHP教程 2025-02-18 阅读1 评论0

心灵代码主题曲唤醒灵魂深处的共鸣

音乐,作为一种独特的艺术形式,自古以来就承载着人类情感的表达与传递。心灵代码主题曲,以其独特的旋律和歌词,唤醒了无数人的灵魂深处,...

PHP教程 2025-02-18 阅读1 评论0

探寻福建各市车牌代码背后的文化内涵

福建省,地处我国东南沿海,拥有悠久的历史和丰富的文化底蕴。在这片充满魅力的土地上,诞生了许多具有代表性的城市,每个城市都有自己独特...

PHP教程 2025-02-18 阅读1 评论0

探寻河北唐山历史与现代交融的城市之光

河北省唐山市,一座地处渤海之滨,拥有悠久历史和独特文化的城市。这里既是古丝绸之路的起点,也是中国近代工业的发源地。如今,唐山正以崭...

PHP教程 2025-02-18 阅读1 评论0