sql server 2008 r2 - vacio - Número distintivo para excluir NULL
sql if null then 0 (5)
poner una condición where a donde la medida no es nula
¿Hay alguna manera de crear una medida calculada que pueda hacer un conteo diferenciado, pero excluyendo los valores nulos? Por ejemplo, si tengo: 10, 20, 20, nulo; el recuento distinto es 3, pero ¿puedo tener la respuesta como 2?
puedes intentar esto:
with cte ( "counter" ) as
(
select
1 as "counter"
from
"YOURTABLE"
group by
"COLUMNNAME"
having ( "COLUMNNAME" IS NOT NULL )
)
select SUM( "counter" ) from cte
@ edit:
variante bastante más fácil:
SELECT COUNT( DISTINCT "COLUMNNAME" ) FROM "TABLENAME"
tienen el mismo problema: es sorprendente que Microsoft lo ignore ... parece que la única solución es crear una vista para un grupo de medida de conteo distinto
http://www.sqlservercentral.com/Forums/Topic810069-17-1.aspx#bm1213461
Gracias por todas las respuestas. Sin embargo, aquí encontré una solución que funciona mejor para mi necesidad: http://richardlees.blogspot.com/2008/10/alternative-to-physical-distinct-count.html
Creando un miembro calculado usando lo siguiente:
count(nonempty({[DimName].[HierarchyName].[LevelName].members-[DimName].[HierarchyName][All].UNKNOWNMEMBER},[Measures].[MyMeasure]))
simplemente agregue donde el valor no es nulo y el valor "! = ''''" que debería hacer el truco