Sql server 2008 r2 要排除NULL的不同计数
是否有一种方法可以创建一个计算出的度量值,该度量值可以进行不同的计数,但不包括空值?例如,如果我有:10,20,20,null;不同的计数是3,但我能得到2的答案吗?放一个where条件 如果度量值不为空,您可以尝试以下方法:Sql server 2008 r2 要排除NULL的不同计数,sql-server-2008-r2,ssas,mdx,Sql Server 2008 R2,Ssas,Mdx,是否有一种方法可以创建一个计算出的度量值,该度量值可以进行不同的计数,但不包括空值?例如,如果我有:10,20,20,null;不同的计数是3,但我能得到2的答案吗?放一个where条件 如果度量值不为空,您可以尝试以下方法: with cte ( "counter" ) as ( select 1 as "counter" from "YOURTABLE" group by "COLUMNNAME"
with cte ( "counter" ) as
(
select
1 as "counter"
from
"YOURTABLE"
group by
"COLUMNNAME"
having ( "COLUMNNAME" IS NOT NULL )
)
select SUM( "counter" ) from cte
@编辑:
非常简单的变体:
SELECT COUNT( DISTINCT "COLUMNNAME" ) FROM "TABLENAME"
有同样的问题-令人惊讶的是微软忽略了它…看起来唯一的解决方案是为不同的计数度量值组构建一个视图
谢谢你的回答。然而,我在这里找到了一个最适合我需要的解决方案: 通过使用以下命令创建计算成员:
count(nonempty({[DimName].[HierarchyName].[LevelName].members-[DimName].[HierarchyName][All].UNKNOWNMEMBER},[Measures].[MyMeasure]))
只需将where value not null和value“!=””相加即可难道不能用适当的where子句消除null吗?我使用GUI的新度量值进行了上述不同计数。至于创建计算的度量值,我需要更多的帮助。where条件消除了null,但结果是3-OP要求2。我想OP询问的是MDX,你说的是SQL:)这也适用于我。