为什么列值始终是第一行中该列的值?

时间:2011-12-01 13:54:07

标签: reporting-services group-by

在我的一个报告中,我有一个包含以下字段的数据集:

CategoryID  ProductID  PackType  NumberOfItems
1              1          1          2
1              1          2          4
1              1          3          12
1              2          1          4
1              2          2          8
1              2          3          12
2              1          1          3
2              1          2          6
...

我需要的输出是:

GroupHeaderA:

  • CategoryID
  • SUM(NumberOfItems where PackType = 1)
  • SUM(NumberOfItems where PackType = 3)
  • SUM((NumberOfItems where PackType = 2) - (NumberOfItems where PackType = 1))
  • SUM((NumberOfItems where PackType = 3) - (NumberOfItems where PackType = 2))

GroupDetailA:

  • ProductID
  • NumberOfItems where PackType = 1
  • NumberOfItems where PackType = 3
  • (NumberOfItems where PackType = 2) -(NumberOfItems where PackType = 1)
  • (NumberOfItems where PackType = 3) -(NumberOfItems where PackType = 2)

为实现这一目标,我在CategoryId上创建了一个ParentGroup,在ProductId上创建了一个子组。在ProductID的详细信息部分中,我放置了NumberOfItems和PackType。在子组头上我放置:

expression_1获取Numbertype为1的NumberOfItems的值

=IIF(Fields!PackType.Value =  1, NumberOfItems, 0)

expression_2获取Numbertype最多的NumberOfItems的值

=IIF(Fields!PackType.Value =  Max(Fields!PackType.Value),NumberOfItems ,0)

但表达式没有正确返回。我发现Fields!PackType.Value始终为1.为什么详细信息页脚组中的列始终显示其第一行的值?

请告诉我是否还有其他方法可以实现这一目标。

1 个答案:

答案 0 :(得分:0)

除非您正在访问详细信息组中的字段,否则对非任何分组条件的任何字段的引用都需要在汇总中。

而不是=IIF(Fields!PackType.Value = 1, NumberOfItems, 0)尝试:

=SUM(IIF(Fields!PackType.Value =  1, NumberOfItems, 0))

而不是=IIF(Fields!PackType.Value = Max(Fields!PackType.Value),NumberOfItems ,0)

=SUM(IIF(Fields!PackType.Value =  Max(Fields!PackType.Value , "YourGroupNameHere"),NumberOfItems ,0))

第二个,包含聚合的聚合在2008R2之前的SSRS中不起作用。我没有太多使用过这种表达方式,所以我甚至不确定它是否适用于R2。如果这不起作用,那么我想写一些嵌入式代码来实现这一点。