在我的一个报告中,我有一个包含以下字段的数据集:
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.为什么详细信息页脚组中的列始终显示其第一行的值?
请告诉我是否还有其他方法可以实现这一目标。
答案 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。如果这不起作用,那么我想写一些嵌入式代码来实现这一点。