查找函数不返回值

时间:2015-07-06 12:57:53

标签: tsql reporting-services ssrs-2012

我在SSRS中有一个数据集,它使用以下TSQL作为数据集:

SELECT  ROW_NUMBER() OVER ( ORDER BY Judge.EventJudgeID ) AS Row ,
    Judge.EventJudgeID ,
    Judge.EventID ,
    Judge.Judge_PersonID ,
    Judge.Passcode ,
    Persons.LastName + ' ' + Persons.FirstName AS JudgeName ,
    Events.EventName ,
    Events.EventDate
FROM    DB.dbo.tblEventJudge Judge
    INNER JOIN DB.dbo.Persons Persons ON PersonID = Judge_PersonID
    INNER JOIN DB.dbo.tblEvents Events ON Events.EventID = Judge.EventID

对于给定的事件,它将返回以下数据:

enter image description here

我有一份SSRS报告,我想将Judge的名字放在上面,如下所示: enter image description here

在Judge 1的表达中,我有以下内容:

=Lookup(Fields!Row.Value,1,Fields!JudgeName.Value,"UpperRightBox")

这似乎运作正常。所以我把以下内容放在Judge 2框中:

=Lookup(Fields!Row.Value,2,Fields!JudgeName.Value,"UpperRightBox")

这将返回一个空白,但没有信息。我不完全理解为什么它没有查找第2行并用JudgeName值填充它。我正在使用SQL Server 2012,但这不重要,因为报告尚未部署。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您需要交换前两个参数。语法是:

Lookup(source_expression, destination_expression, result_expression, dataset)
  

source_expression :评估当前范围内的源表达式。

     

destination_expression :在应用过滤器后,评估指定数据集的每一行的目标表达式,   基于指定数据集的整理。

因此,对于第二个字段,您需要说:取这个常数:2(源),并遍历数据集“UpperRightBox”中的所有行,当您在列中找到一个名为“2”的行时行“(目的地),告诉我该行中的法官姓名(结果)。