【问题标题】:How to group report vertically and horizontally at the same time?如何同时对报表进行纵向和横向分组?
【发布时间】:2016-11-25 14:42:52
【问题描述】:

我在我的RDLC 报告中使用Matrix 来同时垂直和水平分组。但我得到的结果与我的目标略有不同。

我的报告是这样的:


当前结果是这样的:


我的目标应该是这样的:


我的查询数据集是这样的:

Company year  Tot1           tot2
3001    2016  60.7332300    58.093040
3001    2015  66.1421300    64.754000
3002    2016  211.3360000   94.113000
3002    2015  169.8230000   168.082000

根据alejandro zuleta 要求:

如何更改报告以实现我的目标?

【问题讨论】:

  • 能否请您包含您的来源查询?
  • @iamdave:我编辑我的问题,你能看看吗
  • 抱歉,我想查看您的查询,而不是结果数据集。
  • @iamdave 这是一个大问题
  • 没关系。如果您无法在字符数限制内将其放在此处,请链接到 pastebin 或类似内容。

标签: c# matrix reporting-services rdlc reportviewer


【解决方案1】:

如果您无法更改查询并且要比较两个不同的年份,您可以硬编码Total 1Total 2

我创建了四列并使用了这些表达式:

=MAX(Fields!Year.Value) 2016 年回归
=MIN(Fields!Year.Value) 2015 年回归

要获取值,请使用:

2016 年共 1 个:

=SUM(IIF(Fields!Year.Value=MAX(Fields!Year.Value),Cdbl(Fields!Tot1.Value),0))

2015 年共 1 个:

=SUM(IIF(Fields!Year.Value=MIN(Fields!Year.Value),Cdbl(Fields!Tot1.Value),0))

2016 年共 2 个:

=SUM(IIF(Fields!Year.Value=MAX(Fields!Year.Value),Cdbl(Fields!Tot2.Value),0))

2015 年共 2 个:

=SUM(IIF(Fields!Year.Value=MIN(Fields!Year.Value),Cdbl(Fields!Tot2.Value),0))

你会得到:

注意没有创建列组。 Category 被添加为行 组。

如果这有帮助,请告诉我。

【讨论】:

  • 请问这是table 还是matrix
  • @AnynameDonotcare,我使用了表格,但您也可以使用矩阵,只要确保没有设置列组即可。如果您使用表格删除行组窗格中的details,只留下公司组。
  • 我得到#Error 的每一个这样的表达:=SUM(IIF(Fields!Year.Value=MAX(Fields!Year.Value),Fields!Tot1.Value,0))
  • 如果不按year分组,你怎么能做这样的事情
  • @AnynameDonotcare,这取决于您的数据集结构。最好的方法应该是使用行组和列组面板。但有时(比如这个)你会设法得到想要的演示文稿。但是,最佳做法是在源 (SQL) 处构建数据集,避免报告处理时间过长。
【解决方案2】:

理想情况下,您可以将总类型和年份仅作为数据集中的两列,然后您可以在矩阵中对其进行分组。

要实现这一点,您只需将列分组级别设置如下:

--总类型
----年份
------详情

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2016-03-02
    • 1970-01-01
    • 2012-03-29
    • 2015-09-09
    相关资源
    最近更新 更多