【问题标题】:How to filter rows with null values in any of its columns in SSRS如何在 SSRS 的任何列中过滤具有空值的行
【发布时间】:2012-10-10 07:26:37
【问题描述】:

我想过滤掉没有包含空值或空白列的行的输出。我使用的是 SQL Server 2012,在 SS2005 中没有名为 'Blank' 的选项,我可以在其中过滤行。我也尝试了以下表达式,但它给了我错误或没有显示正确的输出

=IsNothing(Fields!ABC.Value)!= True 
=Fields!ABC.Value = ''

请提出解决方案。

【问题讨论】:

  • 如果您通过数据集或 tablix 属性(过滤器选项卡)应用过滤器,您的条件可能类似于 Expression - Fields!ABC.Value, operator , Value =Nothing

标签: ssrs-2008 reporting-services reportingservices-2005


【解决方案1】:
  • 调出 tablix 或组属性
  • 切换到“过滤器”
  • 添加新过滤器
  • 将表达式设置为:

    =IsNothing(Fields!YourFieldHere.Value)

  • 将类型设置为“布尔”(参见下面的屏幕截图),否则您将收到“无法比较布尔和字符串类型的数据”错误。

  • 将值设置为false

这适用于过滤行和组。

【讨论】:

  • 这对我不起作用。我收到The FilterValue expression for the tablix ‘Tablix1’ has the value “False”, which is not a valid Boolean value
  • 我可能有点晚了。您是否将类型从文本更改为布尔值,如上面@Tim Abell 的屏幕截图所示。
【解决方案2】:

我们应该在 Expression 中使用 isNothing 方法,将 Text 更改为 Boolean 然后值将是“真”

例如:

Expression 
=IsNothing(Fields!TestA.Value)<>True
(Expression type should be Boolean)
Operator
=
Value
=True

【讨论】:

  • 在过滤器对话框中,在值字段中,如果您使用 ="True",那么这是一个字符串,并且会导致错误,因为它无法与您的布尔表达式进行比较。您只需要使用常量 TRUE 并将其直接写入值字段。
  • @Aasai 举例来说,我正在查看“表达式”对话框中的文本字段以设置表达式...。我应该在那里输入所有内容的哪一部分?
【解决方案3】:

编辑 SQL 查询,使其不会在要分组的列中返回 NULL 值,而是让它返回一个虚拟值;例如:ISNULL(columnA, 'dummy')

在列组定义中添加一个过滤器:ColumnA 'dummy'。

【讨论】:

    猜你喜欢
    • 2022-11-19
    • 1970-01-01
    • 2014-09-23
    • 2012-04-25
    • 1970-01-01
    • 2017-09-17
    • 2014-08-12
    • 2020-03-25
    • 1970-01-01
    相关资源
    最近更新 更多