乔希,
SSRS 报表项中的每个项都附加了一个 DataSet。假定每个函数都指向此 DataSet。
但是,您可以“突破”并访问其他数据集。 SUM、FIRST 和 LAST 等聚合函数采用可选的第二个参数,即 DataSet 的名称。因此,例如,您的表可以附加到 DataSet1,但您想要 DataSet2 中所有数据的总和:
SUM(Fields!SomeData.Value, "DataSet2")
您还可以在聚合中嵌入函数。例如,如果您想要统计 DataSet2 中的所有男性:
SUM(IIF(Fields!Gender.Value = "male", 1, 0), "DataSet2")
这对于大多数情况来说应该足够了,但是在这些聚合函数中,除了您在函数中调用的数据集之外,您不能引用来自任何其他数据集的数据。有时您希望将数据匹配到另一个 DataSet 列并从不同的列中提取数据。这就是 LOOKUP 和 LOOKUPSET 发挥作用的地方。语法为 LOOKUP(本地字段名称、远程字段名称、要获取的远程字段、数据集名称)。例如,如果您想通过客户 ID 查找性别:
LOOKUP(Fields!Client_ID.Value, Fields!Person_ID.Value, Fields!Gender.Value, "DataSet2")
在上面的示例中,Client_ID 是 DataSet1 中的一列。其余列存在于 DataSet2 中。您可以通过使用字符串函数来检查多个列来获得更多幻想,但我认为这比您现在尝试完成的更高级。
LOOKUPSET 的工作方式与 LOOKUP 相同,但返回一个匹配数组。当数据上没有一对一匹配时,您将使用它。
希望这会有所帮助。我知道 LOOKUP 一开始让我有点困惑,而且文档也不是很有帮助。