***S 2012 表达式 -- 空值补零示例

***S 2012 表达式 -- 空值补零示例

 

当我们使用矩阵来设计报表时,常常会发现单元格中出现空值,通常为了报表美观或是方便使用者阅读,会将空值补零,那么零要怎么补呢?在一般的SQL查询语法多半是使用以下方式来补零:

SQL Server

SELECT ProductName,ISNULL(SalesAmount,0) FROM OrderDetail


Oracle

SELECT ProductName,DECODE(SalesAmount,null,0) FROM OrderDetail


 

但是,使用这一招在***S的矩阵中就没有效了!因为使用SQL语法补零是在产生数据集的时候填补空值。但是,当我们使用矩阵在设计报表时,是先产生数据集,然后将数据集使用在矩阵中的,当行列交错未产生值时,会发生空值的。因此使用SQL语法是无法解决矩阵中空值数据单元格的问题。

 

以下介绍两种比较简单的空值补零技巧,如果是未做汇总的详细数据时(通常是出现在数据表中),可使用以下表达式:

=IIF(Fields!SALES_AMT.Value is Nothing,0,Fields!SalesAmount.Value)

 

如果单元格有经过汇总的时候,可使用以下语法来进行空值补零的动作,设置方法如下:

 

步骤1

单击销售金额单元格,右击选择“Expression”。

 

步骤2

输入以下表达式:

=iif(Count(Fields!SALES_AMT.Value) = 0, 0, Sum(Fields!SALES_AMT.Value))

 

clip_image002

 

步骤3

同理也将销售数量补零,切换至“Preview”标签页,可以发现无销售量的数据单元格就补零了。

 

clip_image004

 

此外,还有一个与空值有关的问题,就是当我们在计算比率时,为了避免除以零错误,常常会通过以下的表达式,将分母为零的状况修正:

=IIF(分母=0,0,分子/分母)

 

但是,实际上如果你使用刚刚的语法来修正除以零的错误时,有时还是会发生表达式错误的结果。这通常发生在分子数据类型为NUMERIC时,对***S来说,如果分子数据类型是NUMERIC,分母内容为0,因此,默认数据类型会是INT,不同数据类型的两个数字是不可以直接相除的,而造成错误信息,如果发生类似的状况,建议利用转换函数将分母的数据类型转换为FLOAT,就可以解决这个问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值