我的情况是我有一个列名称'NotifcationLog.Status。
状态可以是3种类型已接受,待定&逾期。我需要计算所有通知状态。
我使用以下表达式
创建了一个计算字段=COUNT(IIF(Fields!NotificationStatus.Value="Accepted",1,Nothing))
当我尝试将此计算字段添加到表格并进行预览时,我收到一条错误消息,指出“聚合,行号,运行值,以前和查找函数不能用于计算字段表达式”
我现在该怎么办?
答案 0 :(得分:1)
您尝试添加
=IIF(Fields!NotificationStatus.Value="Accepted",1,0)
作为您的计算字段。这将返回1或0,具体取决于状态是否被接受。
然后您想要使用它,只需SUM
您的计算字段即可计算。
=Sum(Fields!NewCalculatedField.Value)
在数据分组的表/矩阵等中使用它。
答案 1 :(得分:0)
错误似乎很直接,你不能这样做的原因是没有任何分组就没有意义。想象一下以下数据集:
+-------+------------+
| ID | Status |
|-------+------------+
| 1 | Accepted |
| 2 | Pending |
| 3 | Accepted |
| 4 | Overdue |
+-------+------------+
如果要在表达式中添加第三列,则它将是<等效的
SELECT ID, Status, COUNT(CASE WHEN Status = 'Accepted' THEN 1 END)
FROM T
没有这个组是无效的语法。您可以使用计数表达式添加报告字段,但不能在数据集中添加计算字段。您尝试制作的数据集如下:
+-------+------------+----------+
| ID | Status | Accepted |
|-------+------------+----------+
| 1 | Accepted | 2 |
| 2 | Pending | 2 |
| 3 | Accepted | 2 |
| 4 | Overdue | 2 |
+-------+------------+----------+
对于所有行重复值没有意义,但是您可以使用窗口函数在SQL中执行此操作:
SELECT ID,
Status,
Accepted = COUNT(CASE WHEN Status = 'Accepted' THEN 1 END) OVER()
FROM T;