1

我部署了一个 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

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

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

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

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

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

4

1 回答 1

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]) 
); 
于 2013-06-18T18:34:35.510 回答