应客户需求,做报表,大约是要实现如图所示的功能。图片是三组(合计,手机,电脑)各自排名。在此功能的开发中,走了不少弯路,现在记下来,以备后需。
如果只是单列排名(比如只要合计的排名),那么用父组和子组(reportservice构造出如下的矩阵结构,每个分组设置好排序依据【表达式】【虽然能设置多个排序表达式,但其余相当辅助排序,对重新编号没啥影响】在要排序的那列按以下黄色内容部分进行设置)。即可完成组内排序,各个父组按自己所在层级进行排序编号。此功能类似于sqlserver rank() over(partition by parentCode order by p2ton DESC) rowid。
不过要完成多列各自组内、组间排名上面的方法还是不能满足,这里用到了迭代,如何
设置见使用分组 Group 属性实现基于父子递归关系的汇总报表 。
构造出如下的数据源:
报表数据源脚本如下:
接下来在报表里设置好每列内容即可,预览结果如下。
自己有查过的相关技术点儿大约有以下内容,帮助不小:
1.提供灵感,入口的地方(高大上的Microsoft Reporting Service 2012 报表课程案例展示),网址如下:
http://www.360doc.com/content/17/0625/10/44728445_666358782.shtml
2. SSRS-使用分组 Group 属性实现基于父子递归关系的汇总报表
http://www.chawenti.com/articles/21319.html
3.SSRS-在数据表中增加排序(此方法主要是通过reportservice自带函数RunningValue)
如下:
1>. 在表或矩阵中增加一列,并命名列头为“排名”
2>.右键单元格-》打开“表达式”-》输入如下
=RunningValue(
Fields!楼层.Value, //要排名的字段
count,//排名类型,直接计数
"场内场外" //在哪个分组内对要排名的字段进行排名
)
3>.比如“年-月-日”的销售数据,如果是
=RunningValue(
Fields!日.Value, //要排名的字段
count,//排名类型,直接计数
"月" //在哪个分组内对要排名的字段进行排名
)
则是对每个月内的日销售进行排名
如果是
- =RunningValue(
- Fields!日.Value, //要排名的字段
- count,//排名类型,直接计数
- "年" //在哪个分组内对要排名的字段进行排名
- )
则是对每个年内的日销售进行排名
注意:RunningValue只输出排序号,对度量值的排序需在表格或者矩阵中定义
4>.ssrs 自定义函数 重新编号
http://www.cnblogs.com/xqhppt/p/3376460.html