我在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
对于给定的事件,它将返回以下数据:
我有一份SSRS报告,我想将Judge的名字放在上面,如下所示:
在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,但这不重要,因为报告尚未部署。任何帮助将不胜感激。
答案 0 :(得分:2)
您需要交换前两个参数。语法是:
Lookup(source_expression, destination_expression, result_expression, dataset)
source_expression :评估当前范围内的源表达式。
destination_expression :在应用过滤器后,评估指定数据集的每一行的目标表达式, 基于指定数据集的整理。
因此,对于第二个字段,您需要说:取这个常数:2(源),并遍历数据集“UpperRightBox”中的所有行,当您在列中找到一个名为“2”的行时行“(目的地),告诉我该行中的法官姓名(结果)。