ssrs 父组/子组 各自排序

应客户需求,做报表,大约是要实现如图所示的功能。图片是三组(合计,手机,电脑)各自排名。在此功能的开发中,走了不少弯路,现在记下来,以备后需。

如果只是单列排名(比如只要合计的排名),那么用父组和子组(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,//排名类型,直接计数

            "月" //在哪个分组内对要排名的字段进行排名  

           )  

则是对每个月内的日销售进行排名

如果是 

 
  1. =RunningValue(  
  2.          Fields!日.Value, //要排名的字段  
  3.          count,//排名类型,直接计数  
  4.          "年" //在哪个分组内对要排名的字段进行排名  
  5. )  

则是对每个年内的日销售进行排名

     注意:RunningValue只输出排序号,对度量值的排序需在表格或者矩阵中定义

 4>.ssrs 自定义函数 重新编号

http://www.cnblogs.com/xqhppt/p/3376460.html

 

posted on 2017-06-27 20:41  范少敏  阅读(1372)  评论(0编辑  收藏  举报

导航