如何在 s-s-rS 的任何列中过滤具有空值的行

Posted

技术标签:

【中文标题】如何在 s-s-rS 的任何列中过滤具有空值的行【英文标题】:How to filter rows with null values in any of its columns in s-s-rS 【发布时间】: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 【参考方案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'。

【讨论】:

以上是关于如何在 s-s-rS 的任何列中过滤具有空值的行的主要内容,如果未能解决你的问题,请参考以下文章

在其中一列中具有多个空值的复合唯一键约束

具有空值的 s-s-rS 输入参数触发报告本身

如何过滤 json 列中嵌套值的行?

如何使用过滤器从scala中的数据框中获取包含空值的行集

PostgreSQL 查询列上具有最小空值的行

计算非空值的行