如何从 SSRS 数据集行中获取条件为真的值

How can I get From a SSRS DataSet Row the Value Where Condition is True

我有一个名为 Reporting 的数据集,其中包括 TagName、Value 和 DateTime。

现在我的问题是:在我的 SSRS 报告中,我有一个文本框,我想在其中输入标记名的值。

例如:我的 TagName 名为:"TT101",值为 21

所以我的文本框应该显示 21

我试过这个表达式:

=IIf(Fields!TagName.Value = "TT101" , Fields!Value.Value ,0)

所以我希望这个表达式的输出是 21 但它是 0 因为它总是 falseNull 我不知道为什么?

因此,正如所描述的,您有来自数据集的数据,如下所示。 因为你已经有了属性(列),它给你价值,为什么你需要它的任何表达式。

在 SSR 中,只需使用 Table 并将 Field 分配给一列,它将自动填充 N 行(对于前 100 行,如果您的数据集 returns 100 行) 这是 SSRS https://docs.microsoft.com/en-us/sql/reporting-services/report-design/tables-report-builder-and-ssrs?view=sql-server-2017

中 Tablix 的 link

根据您的评论,您仅在 TagName 为 TT101 的情况下才需要 max。 让我们做如下的事情。

创建一个新的列我们称之为"Value for Tag TT101" 现在为此列设置 Value with condition as

IIf(Fields!TagName.Value = "TT101" , Fields!Value.Value ,0)

这会做什么,将为 TT101 设置值,如果标签名称不同,则为 0。

现在您可以使用如下的文本框表达式

=Max(Fields!newColumValue.Value, "myDataSetName")

这对你有用。

如果您真的只是想要您描述的内容,则需要在文本框表达式中添加 Sum()。像这样。所有其他聚合函数也将起作用,例如 Max、Min、First 等。

=Sum(IIF(Fields!TagName.Value = "TT101" , Fields!Value.Value ,0))

在文本框中,您总是可以访问整个数据集,这就是为什么您必须使用 Sum() 对其进行聚合的原因。如果您的数据集中有更多行,满足条件,您将得到一个总和。如果您确定只有一行满足此条件,您将得到 21.

另一种无需文本框即可完成相同操作的方法是使用 tablix。在 tablix 中添加整个数据集,然后转到 tablix 属性 > 过滤器并添加过滤器 ("TT101")。这样当你有更多满足过滤条件的行时,你不会得到一个总和,你只是列出每一行。