【发布时间】:2015-10-20 15:04:46
【问题描述】:
当某些值为 NULL 时,请帮助创建平均值
事实表:
立方体:
SELECT NON EMPTY {[Measures].[Score]} * [Date].[Month].allmembers ON COLUMNS
,{[Name].[name].allmembers} ON ROWS
FROM Test
问题:
当我计算平均值时,NULL 值被排除在外。我尝试了 COALESCEEMPTY(),但无论如何都无法正确计算平均值。分数 = 0 不正确的月份的平均值。代码如下:
WITH
MEMBER [Measures].[DateCount] AS DISTINCTCOUNT([Data].[date].[date])
MEMBER [Measures].[ScoreX] AS COALESCEEMPTY([Measures].[Score],0)
MEMBER [Measures].[DateCountX] AS COALESCEEMPTY([Measures].[DateCount],0)
MEMBER [Measures].[AvgScore] AS IIF([Measures].[DateCountX]=0,0,[Measures].[ScoreX]/[Measures].[DateCountX])
SELECT NON EMPTY {[Measures].[AvgScore]} * [Date].[Month].allmembers ON COLUMNS
,{[Name].[name].allmembers} ON ROWS
FROM Test
请帮助找到解决方案。
【问题讨论】:
-
您需要使用 COALESCE_EMPTY 将空单元格替换为零。
-
我添加了 COALESCEEMPTY,现在表格没有空单元格,而是 0。然而,“总分”是一样的。我怎样才能让它计算出正确的值?
-
你是如何计算[数据计数]的?我在你的事实表中没有看到它。在我看来你在追求:(Score1 + Score2)/2,我不知道 [Data Count] 是如何进入它的。
-
我更新了问题,详细说明了我如何获得 [Data Count]
-
好的,那么你不能除以DataCount,或者当事实表中没有一个月份的行时,你仍然会除以1。您需要除以返回数据的月数。
标签: sql-server ssas mdx olap