微软BI SSRS渐悟之实现季度分组合计

浏览: 3539

引言

在报表定制中,我们除了会按月度、年度等做合计外,季度也是常见的一种合计维度。那么如何来实现季度合计呢,拿MS SQL来说,他是有日期函数可以获取季度的。这样可以直接在数据库查询层面提取季度,然后为月度分组添加季度父组即可。然而,假设提供给我们的数据只有月度并没有季度,在SSRS层面要如何实现这个效果呢,请往下看...

关键知识点

MS SQL 季度提取,使用DatePart函数,参数为qq或q,如:select datepart(qq,getdate()),datepart(q,getdate())

SSRS 用月度取季度,IIF Chonse Switch,如=Choose(@month,1,1,1,2,2,2,3,3,3,4,4,4)

当然SSRS也有DatePart函数,但是基于优化考虑我们通常会在数据层面完成统计,或直接使用汇总过的数据。

细节实现

原始数据:


数据层面实现

step1 写查询语句,直接提取季度、月度

select datepart(q,checkouttime) q,
datepart(month,checkouttime) m,
saleprice
from [dbo].[tbl_EXE_SaleCar]


step2 插入矩阵,月度为行组,删除列组


step3 为月度分组季度父组



step4 预览效果如下:


感觉是实现了,但是有没有觉得和我们所见过的报表略有区别呢?对了,季度分组有些多余了。好吧!搞定他!!!

setp5 删除季度列,右键列头,删除列


setp6 最终效果如下,是否感觉舒服好多(希望不是加了背景色的原因)


SSRS层面实现

SSRS层面实现的话,其实同上面极为相似,这儿不再复述,仅点出不同之处。

step1 这儿我们不提取季度,那么本质上只剩下月度m和价格saleprice两个字段

step2 本步操作一样

step3 这步由于我们查询的时候没有提取季度值,在这儿只能来构造,分组依据点开表达式=Choose(Fields!m.Value,1,1,1,2,2,2,3,3,3,4,4,4)

step4 本步操作一样

step5 本步操作一样

step6 本步操作一样

思路扩展

上面我们讲到了如何实现季度,那么上半年、下半年是不是同样的道理呢,IIf(@month <= 6,"上半年","下半年")。

道理是相通的,其他一些类似的BT合计需求均可参照些法实现。

推荐 0
本文由 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

8 个评论

下一篇要出图了吧。。哈哈
悟

回复 梁勇

出什么图
梁勇

梁勇 回复

透视图,仪表盘,饼图等。
悟

回复 梁勇

下篇lookup、lookupset
悟

回复 梁勇

其实感觉这种东西做成视频更好些,因为视频连续,光截图连续性不够,而且琐碎,截太多又不好。
梁勇

梁勇 回复

可以先写成博客的形式,然后在出视频,这种效果比较好,大家学习可以边看博客,边照着视频操作,BIWork就是这样弄的
悟

回复 梁勇

嗯,写博的时候就经常纠结,要不要把每步都截下来,担心操作中会有误差,但又感觉太碎了。经常是截的图最后又删了。
坐看大神!

要回复文章请先登录注册