如何在 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 的任何列中过滤具有空值的行的主要内容,如果未能解决你的问题,请参考以下文章