问题描述
我需要统计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'。