如何从 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
因为它总是 false
或 Null
我不知道为什么?
因此,正如所描述的,您有来自数据集的数据,如下所示。
因为你已经有了属性(列),它给你价值,为什么你需要它的任何表达式。
在 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")。这样当你有更多满足过滤条件的行时,你不会得到一个总和,你只是列出每一行。
我有一个名为 Reporting 的数据集,其中包括 TagName、Value 和 DateTime。
现在我的问题是:在我的 SSRS 报告中,我有一个文本框,我想在其中输入标记名的值。
例如:我的 TagName 名为:"TT101"
,值为 21
。
所以我的文本框应该显示 21
。
我试过这个表达式:
=IIf(Fields!TagName.Value = "TT101" , Fields!Value.Value ,0)
所以我希望这个表达式的输出是 21
但它是 0
因为它总是 false
或 Null
我不知道为什么?
在 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")。这样当你有更多满足过滤条件的行时,你不会得到一个总和,你只是列出每一行。