请帮助创建一些值是 NULL 时的平均值
事实表:
立方体:
SELECT NON EMPTY {[Measures].[Score]} * [Date].[Month].allmembers ON COLUMNS
,{[Name].[name].allmembers} ON ROWS
FROM Test
问题:
当我计算平均值时,NULL 值被排除在外。我尝试了 COALESCEEMPTY(),但无论如何都无法正确计算平均值。 Score=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
请帮忙寻找解决方案。
最佳答案
可能像下面这样:
WITH
MEMBER [Measures].[Score X] AS
IIF(
[Measures].[Data Count]=0
,0
,[Measures].[Data Count]
)
MEMBER [Measures].[Data Count X] AS
COUNT(
[name].[name].CURRENTMEMBER
*[Measures].[Score X]
)
MEMBER [Measures].[Avg Score] AS
DIVIDE(
[Measures].[Score]
,[Measures].[Data Count X]
)
...
...
如 Tab 所述,您可以对上面的第一个计算成员使用函数 COALESCEEMPTY
:
WITH
MEMBER [Measures].[Score X] AS
COALESCEEMPTY(
[Measures].[Data Count]
,0)
MEMBER [Measures].[Data Count X] AS
COUNT(
[name].[name].CURRENTMEMBER
*[Measures].[Score X]
)
MEMBER [Measures].[Avg Score] AS
DIVIDE(
[Measures].[Score]
,[Measures].[Data Count X]
)
...
...
关于sql-server - 当某些行不存在时如何计算平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33240187/