SQL多维数据集计算在CASE语句中无法正常工作?

时间:2013-06-17 19:46:27

标签: sql ssas mdx business-intelligence

我部署了一个SQL SSAS多维数据集,我使用的是基本的计算成员,似乎遇到以下问题..

当我有一个计算成员时:

Case
When ([Measures].[QTY SHIPPED] + [Measures].[QTY ADJUST]) is null OR ([Measures].[QTY SHIPPED] + [Measures].[QTY ADJUST]) = 0 
THEN 0
ELSE [Measures].[NET SALES CAD] / ([Measures].[QTY SHIPPED] + [Measures].[QTY ADJUST]) 
END

我得到了!Excel中我的结果单元格的#Value ..

但是,当计算出的成员是..

[Measures].[NET SALES USD] / ([Measures].[QTY SHIPPED] + [Measures].[QTY ADJUST])

删除CASE语句,它按预期工作..这里的问题是,如果我不将它包装在CASE中我得到#NUM!列除以零的值。

知道为什么CASE语句在这个计算成员中不起作用吗?

1 个答案:

答案 0 :(得分:0)

我没有检查为什么你的CASE语句不起作用,但是我使用IIF来创建类似的结果来创建适合你的计算成员:

CREATE MEMBER CURRENTCUBE.[Measures].[FOO]
AS IIF(([Measures].[QTY SHIPPED] + [Measures].[QTY ADJUST])=0 OR ([Measures].[QTY SHIPPED] + [Measures].[QTY ADJUST]) = NULL,
NULL,
[Measures].[NET SALES CAD] / ([Measures].[QTY SHIPPED] + [Measures].[QTY ADJUST]) 
);