在SSRS报告中获取小计

时间:2017-07-31 14:24:52

标签: reporting-services ssrs-tablix dynamics-ax-2012-r3

我有一个非常简单的问题,但我似乎无法解决它。

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

由于Dynamics AX内容的设置方式,我的报告基于2个表格。表1是来自table1'的选择*表2是从表2'中选择*。由于它在AX中的设置方式,没有where子句。它只是报告这些表的全部内容。

Product Availability

所以这是我对第一张表的设置。产品列表,然后下面的行有子报告。

第二个表格如下:

Table 2 details

表2详细列出了具有该产品的订单。我们要做的是看看我们有多少订单,而不是库存。

表2列出了所有产品的所有数据。子报表所基于的查询是select * from table2。没有where子句(这是基于它在AX中的设置方式。我不能在where子句中进行过滤,在这种情况下)。

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

Product Code Filter

到目前为止,我报告中的所有内容都能正常运行。它以我想要的方式显示所有内容。我的详细信息列出了与每种产品相关的所有订单。

现在的诀窍是我想要为该产品订购的所有案例的细节中的小计。但我所做的一切似乎都没有用。

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

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

这似乎应该是非常简单的,但我很难过。

如果可能的话,我会要求您尝试提供一个不需要重新设计整个报告的解决方案。我们在这里度过了一段时间,这会导致一些问题。

毫无疑问,我错过了一些关键信息,所以请告诉我您可能需要了解的其他信息,以帮助我解决此问题。

更新

Chance Finley下面建议Sum(字段,组名),我试过了。它实际上是正确的,但它显示不正确。

Report with sum of group

这是Visual Studio中的样子......

SSRS Designer Layout

更新2

如果我在组外添加总数,如下所示:

Outside Group

我得到以下结果:

Outside group totals

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

更新3

这是另一个。这一个给出了正确的结果,但随后抛出了我不想要的其他东西。这是SSRS设计器中的设置: Between two groups

以下是它的结果: Between two groups totals 显示所有小计后,它显示第二个产品(0227),然后显示其后的所有小计的列表(除了缺少0130)。第三个显示除0130和0227之外的所有小计..依此类推......

更新4

按照CuriousKid提供的步骤,我离得更近了......

他的步骤之后的设置(并非所有字段都填写): Almost

结果:

Almost totals

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

3 个答案:

答案 0 :(得分:3)

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

第1步:

添加列:

enter image description here

第2步:

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

enter image description here

enter image description here

你会得到这个:

enter image description here

第3步:

enter image description here

这将为您提供详细行详细信息行组(在本例中为Quantity)

enter image description here

最终答案: 使用所有" ProductCode"

enter image description here

使用Filtered" ProductCode"

  

在ProductCode组上添加过滤器:

enter image description here

enter image description here

答案 1 :(得分:0)

进入您想要小计的单元格中的表达式构建器。这将根据一个小组给你一笔款项。

Array.isArray(this.state.contacts)

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

修改

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

<强> EDIT2:

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

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

答案 2 :(得分:0)

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

您希望您的群组像这样错开: enter image description here

要执行此操作,请右键单击订单号并插入一行&#34;外部组 - 下方&#34;。使用此设计,Sum是一个小计,每个产品代码只会重复一次。