【问题标题】:Sum and average over null values SQL Server 2008 Analysis Services对空值求和和求平均值 SQL Server 2008 Analysis Services
【发布时间】:2010-05-19 13:45:01
【问题描述】:

我想我有一个简单的问题,但我用谷歌搜索并找不到解决方案。我有一个具有 MeasureA、MeasureB 和 MeasureC 的立方体。并非所有三个度量都有每条记录的值,有时它们可​​能为空,这取决于它是否适用。

现在对于我的总数,我需要取平均值,但平均值不得考虑空值。任何帮助都感激不尽。当我查看度量时,空值显示为零。

【问题讨论】:

    标签: sql sql-server-2008 cube


    【解决方案1】:

    为什么不使用 AVG() 函数计算平均值?

    例如:
    ([MEASURES].[MEASURESA] + [MEASURES].[MEASURESB] + [MEASURES].[MEASUREC]) / 3

    当然,这仅在该平均值仅包含 3 个度量时才有效。如果您需要对一组进行评估,我只会真正使用 AVG() 函数:
    http://msdn.microsoft.com/en-us/library/ms146067.aspx

    【讨论】:

      【解决方案2】:

      默认情况下,SQL Server 会忽略空值 - 因此您会收到消息 - Warning: Null value is eliminated by an aggregate or other SET operation.

      例子:

      create table #test (id int null)
      insert #test values (1)
      insert #test values (1)
      insert #test values (null)
      insert #test values (1)
      
      select avg(id), sum(id), count(id) from #test
      

      【讨论】:

        【解决方案3】:

        您可以使用 NonEmpty() MDX 函数来包装您要平均的集合吗?

        http://msdn.microsoft.com/en-us/library/ms145988.aspx

        【讨论】:

          【解决方案4】:

          对于每个度量,在其属性中转到源列设置并选择 NullProcessing="Preserve",然后该度量将返回 NULL 而不是 0

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-08-03
            • 1970-01-01
            • 1970-01-01
            • 2015-11-22
            • 2018-09-26
            • 1970-01-01
            • 2012-12-15
            • 1970-01-01
            相关资源
            最近更新 更多