如果所有字段都是空白SSRS表达式,则添加N / A.

时间:2015-08-10 15:33:22

标签: reporting-services ssrs-2012 ssrs-expression

我的桌子的一列中有很多字段。如果field1为空白显示字段2,我就知道了,我现在要做的是如果所有字段都是空白显示N / A.

我在下面尝试过的内容;

=IFF(ISNothing(Fields!field1.Value) & IIF(IsNothing(Fields!field2.Value),"N/A",VbCRLF & Fields!field2.Value))

有时会显示的是field1N / A.

有人能指出我正确的方向吗?

谢谢,

更新1:

我也试过了;

=IFF(ISNothing(Fields!field1.Value),"N/A",Fields!field1.Value & IIF(IsNothing(Fields!field2.Value),"N/A",VbCRLF & Fields!field2.Value))

这也行不通。

2 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点。您可以在SQL Server查询或SSRS中处理它

方法1:TSQL

您可以使用COALESCE函数查找第一个非空值。如果全部为NULL,则将其替换为N / A

SELECT COALESCE(Field1, Field2, Field3, 'N/A') AS newFieldValue, ....
FROM myTable.....
WHERE ....

方法2:SSRS

SSRS中没有COALESCE个等效项。您可以使用iifswitch来模拟逻辑。

=SWITCH(NOT(ISNothing(Fields!field1.Value)), Fields!field1.Value, 
       NOT(ISNothing(Fields!field2.Value)), Fields!field2.Value,
       NOT(ISNothing(Fields!field3.Value)), Fields!field3.Value,
       1=1, "N/A")

还要记住,如果字段中有空格,ISNULL函数将不会处理它。在这种情况下,您还需要使用类似的逻辑来处理空格。

HTH。

答案 1 :(得分:0)

我建议你需要的是ISNULL。

示例用法如下:

ISNULL(su.address1_line2,' N / A')

这将在该列中找到空值,并在报告

中将其替换为N / A.