2011-12-01 58 views
0

在我的报告之一,我有以下字段的数据集:为什么列值始终是第一行中该列的值?

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)

为了实现此目的,我在ProductId的CategoryId和子组上创建了一个ParentGroup。在ProductID的细节部分,我已经放置了NumberOfItems和PackType。儿童组头我把:

expression_1得到NumberOfItems的值,其中packtype为1个

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

expression_2得到NumberOfItems的值,其中packtype是最大

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

但表达没有回复正确。我发现Fields!PackType.Value总是为1.为什么细节组的页脚列总是显示其第一行的值?

请告诉我,如果还有另一种方法可以实现这一点。

回答

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)) 

这第二个,包含聚合将在SSRS之前2008R2不行的总和。我还没有使用过这种表达方式,所以我甚至不确定它是否可以在R2中使用。如果这不起作用,那么我会写一些嵌入式代码来获得它。

相关问题