不同的计数以排除NULL

时间:2012-12-17 12:18:39

标签: sql-server-2008-r2 ssas mdx

有没有办法创建一个可以进行非常计数但不包括空值的计算度量?例如,如果我有:10,20,20,null;不同的计数是3,但我可以得到2的答案吗?

5 个答案:

答案 0 :(得分:0)

放在哪里条件 到度量不为空的地方

答案 1 :(得分:0)

你可以试试这个:

with cte ( "counter" ) as
( 
    select 
        1 as "counter" 
    from 
        "YOURTABLE" 
    group by 
        "COLUMNNAME" 
    having ( "COLUMNNAME" IS NOT NULL )
)
select SUM( "counter" ) from cte

@ edit:

非常容易的变体:

SELECT COUNT( DISTINCT "COLUMNNAME" ) FROM "TABLENAME"

答案 2 :(得分:0)

有同样的问题 - 这是惊人的微软忽略它...看起来唯一的解决方案是为不同的计数测量组建立一个视图

http://www.sqlservercentral.com/Forums/Topic810069-17-1.aspx#bm1213461

答案 3 :(得分:0)

感谢您的所有答案。但是,我在这里找到了最适合我需求的解决方案:http://richardlees.blogspot.com/2008/10/alternative-to-physical-distinct-count.html

使用以下内容创建计算成员:

count(nonempty({[DimName].[HierarchyName].[LevelName].members-[DimName].[HierarchyName][All].UNKNOWNMEMBER},[Measures].[MyMeasure]))

答案 4 :(得分:0)

只需添加值不为null的值,并将值“!=''”添加到应该执行的操作