使用文本框值作为来源的查找显示太多行 + SSRS

Lookup using textbox value as source showing too many rows + SSRS

我在 ssrs 中做了一个查找函数,其中源是 reportItem 引用。我想 return 我根据 reportItem 参考查找的 table 中的值。该报告正在检索正确的值,但我得到了重复的行,我想知道是否有办法消除它。我在 tablix 中的参数是基于票号的。

基础数据有 3 个事务,但当前正在 return编辑 9 行。

在 SSRS 中,我的查询是:

Select 
ticketno, name, control, value 
from ticket a 
inner join details b on a.ticketno = b.ticketno
where control like 'LS%' and ticket = 'ED08'

return 结果包含 4 行事务 即:

Ticket Name Control Value
ED08 Eng LS1 A
ED08 Acct LS2 B
ED08 Med LS3 C

在 SSRS 中,我使用了 table 并对名称进行了硬编码,因为可能没有任何值。 我硬编码了 Eng、Acct、Med、Dent 的名字。

我在每个单独的行上输入了一个表达式

=lookup(ReportItems!textbox.Value,Fields!Name.Value,Fields!Value.Value, "UDF_Det")

但是,当我 运行 报告时,我得到了额外的行。

从 SQL 中的票中检索到的交易仅检索到 3 行,所以我预料到了。有没有办法过滤特定行的数据?

我看过这个 post 但是因为我没有做任何计算所以我不确定为什么我会得到重复的行。

我的设计是这样的:

输出如下所示:

实际上,现在我已经编辑了你的问题,我明白了问题所在。 :)

您可以只获取 Name 的列表并将其左连接到您现有的查询。

您也许可以从现有的 table 中获取列表(希望如此),或者您可以硬编码一个(尽可能避免)。

假设您需要的所有 Names 都在您的 ticket table 中,您可以使用类似这样的东西...

SELECT DISTINCT [Name] FROM ticket

(如果名称来自另一个 table,只需更改查询以适应) 然后将您现有的查询加入到此,例如

SELECT n.[Name], t.ticketno, t.control, t.value 
    FROM (SELECT DISTINCT [Name] FROM ticket) n
        LEFT JOIN (
                  Select ticketno, name, control, value 
                      from ticket a 
                      inner join details b on a.ticketno = b.ticketno
                      where control like 'LS%' and ticket = 'ED08'
                 ) t 
                 ON n.[Name] = t.[Name]

应该会给你类似的东西

Name Ticket Control Value
Eng ED08 LS1 A
Acct ED08 LS2 B
Med ED08 LS3 C
Dent NULL NULL NULL

然后您可以在 table 的详细信息组中简单地使用一行来输出结果。

如果这没有帮助,post 来自您的数据库的一些示例数据 tables 并显示完整的报告设计,包括行组等