我有一份报告,其中显示每一行并按行项目细分总和。即:
类别 | 田野 | 总计数 |
---|---|---|
A 猫 | A | 50 |
A 猫 | B | 100 |
B 猫 | C | 50 |
B 猫 | D | 25 |
A类总计:150
B 类总计:75
全部总数:225
每行总计列出如下:
sum(iif(Fields!Field.Value = "A",1,0))
所以总共有 50 个“A”。等等。每个类别的总数是
sum(iif(Fields!Category.Value = "Cat A",1,0))
那么总计的话就是
sum(iif(Fields!Category.Value = "Cat A",1,0)) + Sum(iif(Fields!Category.Value = "Cat B", 1, 0))
这一切都很好。但是,我有一个参数来选择所需的字段。有没有办法从总数中排除某个字段的总数?因此,如果有人选择字段参数中除“A”之外的所有字段,我希望看到以下内容:
类别 | 田野 | 总计数 |
---|---|---|
A 猫 | B | 100 |
B 猫 | C | 50 |
B 猫 | D | 25 |
A 类总计:100
B 类总计:75
全部总数:175
这可能需要一些花哨的步法吗?
我确实尝试了一些不同的行可见性设置步骤,因为我不想显示字段参数中未选择的行,但不确定如何合并。这是行级别的可见性设置:
iif(
InStr(Join(Parameters!Category.Label,","),"Cat A") > 0
and InStr(Join(Parameters!Field.Label,","),"A") > 0
,false,true)
SUM 表达式应该检查参数和行以便对其进行计数。
=Sum(iif(InStr(Join(Parameters!Category.Label, ","), "Cat A") > 0, 1, 0) * iif(InStr(Join(Parameters!Field.Label, ","), "A") > 0, 1, 0) * Iif(Fields!category.Value="Cat A",1,0) * Iif(Fields!field.Value="A",1,0))
对于 CatA、CatB 和 CatA + CatB 的总计,您可以使用如下所示的 ReportItems 表达式
=ReportItems!Textbox15.Value + ReportItems!Textbox18.Value
最终结果如下图所示(为了演示我将所有行保留为可见的总数)