在SSRS 2008中的同一数据集中查找

时间:2016-05-31 15:38:40

标签: reporting-services dataset lookup

我试图在同一数据集中的SSRS 2008中进行查找。

以下是该方案:

ID        Postcode  Name
123456    A12 345   Customer1
234567    B12 456   Customer2
345678    C12 789   Customer3
D12 345   D12 345   City1
A12 345   A12 345   City2

这是我想要实现的目标(添加额外的位置列):

ID        Postcode  Name       Location
123456    A12 345   Customer1  City2
234567    B12 456   Customer2  City3
345678    D12 345   Customer3  City1
D12 345   D12 345   City1      City1
A12 345   A12 345   City2      City2

我尝试过以下表达式:

=Lookup(Fields!Postcode.Value,Fields!ID.Value,Fields!Name.Value,"Location")

以下是错误消息:
文本框的值表达式' TextBox45'具有对查找函数无效的scope参数。 scope参数必须设置为字符串常量,该常量是数据集的名称。
我知道数据集首先是不正确的,并且构建这样的数据是一种可怕的做法。但是,这些是卡片'我得到了,我无法改变它。

另外,我知道我可以创建一个单独的查询来从ID字段中提取邮政编码并将其用于查找,但如果没有额外的数据集可以获得相同的结果,我只是在徘徊?

对不起,如果这首先是一个有缺陷的问题。

非常感谢任何输入。

2 个答案:

答案 0 :(得分:0)

谢谢你@StevenWhite,你的提示是一个答案。
问题不在于问题的逻辑,而在于表达。
由于我在SSRS-2008上缺乏经验,我不确定表达的最后一点是什么。

这是修复:

JOIN

答案 1 :(得分:0)

这可能对任何人都没有帮助,但它确实帮助了我。我试图在 SSRS 中找到一行中的下一个值,类似于 Previous() SSRS 函数,但方向相反。

没有 Next() SSRS 函数,但我发现了一些有关使用 Lookup() SSRS 函数以及使用 ROW_NUMBER() SQL 函数的信息。 ROW_NUMBER() 对我不起作用,但 DENSE_RANK() 起作用。

建议的 Lookup() 函数类似于: =Lookup(Fields!RowNumber.Value+1,Fields!RowNumber.Value,Fields!PFCode.Value,"Main") 除了它并没有完全奏效。理论上应该,但没有。

然后我想,如果我只是添加第二个,我原来的“Main”的重复数据集,称之为“Main2”,然后使用 Lookup() 函数来解决这个问题。它奏效了!也许这不是“有效”的资源使用,但在花了两天的大部分时间之后,我不在乎。 :-)

希望这对那里的人有所帮助。