如何解决从其他表获取行的SUMIIF的范围错误
当前正在使用以下代码获取范围错误,我们试图做的是计算符合条件的行数:
=
SUM(
IIF(
Fields!Defect_Category.Value = "Packaging"
& Fields!Defect_Category.Value = "Major"
& Fields!WorkOrderdisplayID.Value = Fields!Work_Order_Id.Value,1,0),"dsdefects"
)
Work_Order_Id是dsGeneral数据集的“键”,该数据集是我们试图实现此功能的Tablix的当前作用域/数据集。有什么办法可以解决吗?
我的理解是SUM的Scope参数指的是我们试图获取之和(在这种情况下为count)的数据集。当将“ dsdefects”指定为SUM的范围时,出现以下错误:
文本框“ TextBox101”的值表达式引用该字段 “ Work_Order_Id”。报告项目表达式只能引用字段 在当前数据集范围内,或者,如果在聚合范围内,则 指定的数据集范围。字段名称中的字母必须使用 正确的情况。
文本框“ TextBox101”的值表达式引用该字段 “缺陷类别”。报告项目表达式只能引用字段 在当前数据集范围内,或者,如果在聚合范围内,则 指定的数据集范围。字段名称中的字母必须使用 正确的情况。
解决方法
我认为,您将需要这样的东西...
=
IIF(
Fields!Defect_Category.Value = "Packaging"
& Fields!Defect_Category.Value = "Major",LOOKUPSET(Fields!WorkOrderDisplayID.Value,Fields!WorkOrderDisplayID.Value,"dsDefects").Length,0)
我将举一个简单的示例来计算另一个数据集中的匹配项,这可能有助于您将两者放在一起以获得解决方案。
如果我使用以下查询创建两个数据集,分别称为dsEmp
和dsDev
dsEmp
DECLARE @e table (empid int,empname varchar(10))
insert into @e values
(1,'Bob'),(2,'Dave')
SELECT * FROM @e
dsDev
declare @d table(empid int,device varchar(10))
insert into @d VALUES
(1,'Phone'),(1,'Laptop'),'Desktop'),(3,'Tablet')
SELECT * FROM @d
然后在我的报告中,添加一个绑定到dsEmp的表,其中显示了empID和empName,然后在最后一栏中使用以下表达式
=LookupSet(
Fields!empid.Value,Fields!empid.Value,"dsDev"
).Length
我得到了最终输出
当lookupset返回一个集合时,该集合的长度实际上就是该集合中包含的项目数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。