2

在 SQL Reporting Services 中,是否可以根据同一行中多个其他列的值从数据集中检索某个值?

所以,如果这是我的数据集:

Id    | Name      | Number | Score
1     | "John"    | 16     | 22
2     | "Jane"    | 64     | 24
3     | "John"    | 20     | 18

我想要某种“where”子句,所以我可以检索所有/值 whereName == 'John'Number == 16例如。这将返回22

我试过 LookUpSet,但这只会比较另一个列值。我需要比较两个。

4

2 回答 2

3

实际上,查找函数的工作方式是使用表达式进行比较。因此,如果我正确理解您的问题,您可以执行以下操作:

=Lookup(Fields!Name.Value+"-"+CStr(Fields.Number.Value), Fields!Name.Value + "-" + CStr(Fields.Number.Value), Fields!Score.Value,"Dataset2")

于 2012-05-29T22:26:07.877 回答
0

如果您基于 DataSet 创建新的 Tablix,则可以根据以下表达式添加一列:

Iif(Fields!Name.Value = "John" & Fields!Number.Value = Parameters!Number.Value, Fields!Score, 0)

当 Name 列的值为“John”并且 Number 与您前面提到的隐藏参数匹配时,这将返回 Score 列的值,如果不匹配,则返回 0。您还可以将它与行上的可见性表达式结合起来,如下所示:

Iif(Fields!Name.Value = "John" & Fields!Number.Value = Parameters!Number.Value, false, true)

这将隐藏与您想要的值不匹配的行。如果合适的话,您也可以很容易地将 Name 值作为参数传入。

或者,如果您确实想要过滤 DataSet 本身,您可以在DataSet Properties > Filter选项卡上指定这些表达式,而不是在 Tablix 级别 - 这取决于您是否需要在报表的其他地方重用 DataSet。

于 2012-05-29T16:29:00.517 回答