在 SSRS 报告中获取小计

Getting a subtotal in an SSRS report

我有一个应该很简单的问题,但我似乎无法解决它。

我有一份 master/detail 报告。这实际上是两份报告。一个用于主记录,然后是一个用于详细信息的子报告。这实际上是在 Dynamics AX 中(这就是为什么这个设置和我将描述的一些限制可能看起来有点奇怪)。但我遇到的问题是 SSRS 问题。

由于 Dynamics AX 的设​​置方式,我的报告基于 2 tables。 Table 1 是 'select * from table1' 而 Table 2 是 'select * from table2'。由于它在 AX 中的设置方式,没有 where 子句。它只是报告这些 table 的全部内容。

这是我第一个 table 的设置。产品列表,然后下一行有子报表。

第二个table如下:

Table 2 有详细信息,即带有该产品的订单。我们要做的是查看我们有多少箱子的订单,以及我们有多少库存。

Table 2 拥有所有产品的所有数据。子报表所基于的查询是 select * 来自 table2。没有 where 子句(这是基于它在 AX 中的设置方式。在这种情况下,我无法在 where 子句中进行过滤)。

因此,为了处理过滤,我在 ProductCode 上创建了组,然后添加了这个过滤器:

到目前为止,我报告中的所有内容都运行良好。它完全按照我想要的方式显示所有内容。我的详细信息列出了与每个产品相关的所有订单。

现在的诀窍是我想要 sub-total 在为该产品订购的所有案例的详细信息中。但是我所做的一切似乎都不对。

如果我简单地右键单击 OrderQty 字段以获取详细信息并单击 "Add Total",它会在每个子报表中显示所有订单的所有产品的总数。因此,例如,产品的详细信息列表可能显示 2 个订单,数量分别为 100 和 20,应该显示小计 120,但显示小计 40,000,这将是所有详细信息的总和报告中的产品。它将在每个产品的每个详细信息列表中显示相同的 40,000 个小计。

或者,如果我在组内添加一行,然后为 CaseCount 添加一个 Sum(),在每个单独的详细信息行之后,它会给我一个与详细信息计数相匹配的小计排。因此,例如,我的产品 130 可能有 2 个订单,分别为 120 和 20。每行都有一个小计。第一个是 100,第二个是 20,而不是两行之后的一个小计,120。

这看起来应该简单得离谱,但我被难住了。

如果可能,我会要求您尝试提供一个不需要 re-architecting 整个报告的解决方案。我们这里时间紧迫,这会导致一些问题。

毫无疑问,我遗漏了一些关键信息,所以请让我知道您可能还需要知道什么来帮助我解决这个问题。

更新

下面的 Chance Finley 建议 Sum(field, groupname),我试过了。它实际上正确地计算了总和,但它显示不正确。

这是 Visual Studio...

中的样子

更新 2

如果我加上组外的总数,如下图:

我得到以下结果:

它把我的总和放在了我想要的地方,但它计算了所有的产品。

更新 3

还有一个。这个给出了正确的结果,但最后又抛出了我不想要的其他东西。这是 SSRS 设计器中的设置:

结果如下: 在显示所有小计后,它会显示第二个产品 (0227),然后显示其后所有小计的列表(缺失的 0130 除外)。第三个显示除 0130 和 0227 之外的所有小计...等等...

更新 4

按照CuriousKid提供的步骤,我更接近...

按照他的步骤进行设置(尚未填写所有字段):

结果:

问题是它的所有产品结果都显示在每个产品的详细信息中。

进入您想要小计的单元格中的表达式生成器。这将为您提供基于组的总和。

=Sum(Fields!OrderQty.Value, "InsertTheNameOfYourGroup")

如果您不在公式中输入组范围,有时 SSRS 会认为您想要所有内容的小计。

编辑:

听起来您正在寻找每个订单的小计。我建议创建另一个子组 "SalesOrderNumber"

编辑2:

如果您希望小计显示在最后一个订单之后,请转到包含小计的行的 visibility/hidden 表达式,并沿行使用一些内容...

=IIF(CountRows("InsertYourGroup") = RowNumber(InsertYourGroup), False, True)

问题是订单号组中有两行。这导致第二行重复,也导致总和处于订单级别。

你希望你的组像这样交错排列:

为此,请右键单击“订单号”并插入一行 "Outside Group - Below"。在这种设计中,Sum 是一个小计,每个产品代码只会重复一次。

这是您需要做的。请检查您的设计中是否缺少任何配置。(我觉得您的分组配置中存在一些问题,但如果没有问题中提供的行组详细信息则无法验证)

第 1 步:

添加列:

第 2 步:

将 ParentGroup 添加到“(详细信息)”,并按 ProductCode 对其进行分组。

你会得到这个:

第 3 步:

这将为您提供详细信息行组的总和行(在本例中为数量)

最终答案: 所有 "ProductCode"

已过滤 "ProductCode"

Adding filter on the ProductCode Group: