如何使用SSRS报告表达式对数据集的记录进行计数

问题描述

我需要统计dataset的记录,其中是AsssistTypeId = 1

我的日期集是这样的,

+---------+--------+---------------+
| LobbyID | ProdID | AsssistTypeId |
+---------+--------+---------------+
| 285316  | 160    | 1             |
+---------+--------+---------------+
| 285317  | 161    | 2             |
+---------+--------+---------------+
| 285318  | 159    | 1             |
+---------+--------+---------------+
| 285319  | 160    | 1             |
+---------+--------+---------------+
| 285331  | 160    | 2             |
+---------+--------+---------------+
| 285332  | 160    | 1             |
+---------+--------+---------------+
| 285333  | 161    | 2             |
+---------+--------+---------------+
| 285334  | 160    | 1             |
+---------+--------+---------------+
| 285335  | 160    | 1             |
+---------+--------+---------------+
| 285335  | 161    | 1             |
+---------+--------+---------------+
| 285335  | 163    | 1             |
+---------+--------+---------------+

目前,我得到了lobbyId个不同值的计数,并按预期方式工作。根据上述dataset,以下表达式的输出返回 9

=iif(inscope("matrix1_RowGroup3"),IIF(Count(Fields!LobbyID.Value) = 0,"",Count(Fields!LobbyID.Value)),iif(inscope("matrix1_AssistedBy"),IIF(CountDistinct(Fields!LobbyID.Value) = 0,CountDistinct(Fields!LobbyID.Value)),CountDistinct(Fields!LobbyID.Value)))

现在,我需要计算LobbyId所在的AsssistTypeId = 1的数量。对于上述数据集,我期望AsssistTypeId = 1计为 6 ,如何为此编写表达式?

更新时间:2020年12月8日

这是我尝试过的方法,但未返回任何结果。

=
iif
(

    inscope("matrix1_RowGroup3"),IIF
        (
            Fields!AsssistTypeId.Value = 1,IIF
            (
                Count(Fields!LobbyID.Value) = 0,Count(Fields!LobbyID.Value)            
            ),Nothing         
        ),IIF
        (
            inscope("matrix1_AssistedBy"),IIF
            (
                Fields!AsssistTypeId.Value = 1,Nothing         
            ),CountDistinct(Fields!LobbyID.Value),Nothing         
            )
        )
)

我也尝试过这个

=iif(inscope("matrix1_RowGroup3"),IIF(SUM(IIF(Fields!AsssistTypeId.Value = 1,1,0)) = 0,SUM(IIF(Fields!AsssistTypeId.Value = 1,0))),0))))

这有效,但是当有重复项LobbyId时,它也算重复项,根据上述数据集,输出显示为 8 ,但应为 6

解决方法

这未经测试,但您可以尝试...

=CountDistinct
    (
      IIF (
           Fields!AssistTypeId.Value = 1,Fields!LobbyID.Value,Nothing
          ),"matrix1_RowGroup3"
    )

由于CountDistinct忽略空值(空值),因此我们用Nothing替换了您不希望计数的值,然后从其余值中对LobbyID进行了计数。

您可能不得不更改或删除"matrix1_RowGroup3"范围,我只是从您现有的表达式中猜出了它的含义。我还假定AsssistTypeID是一个错字,并删除了一个's'。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...