¿Cuál es la diferencia entre COUNT(CASE WHEN [Column A] = ____ THEN 1 END
y COUNT(CASE WHEN [Column A] = ____ THEN 1 ELSE 0 END
?
He estado usando el primero y no he visto la diferencia hasta ahora; ¿Cuál es la razón para agregar el ELSE 0
- hay situaciones donde SQL Server contará incorrectamente?
sql-server
sql-server-2008
Coburne
fuente
fuente
Respuestas:
Simplemente, en el primer caso, está contando 1s y NULLs. (Se devuelve NULL si ninguna de las condiciones en la declaración CASE coincide y no hay una cláusula ELSE). Los NULL no se cuentan. En el segundo caso, 1 y 0. Se pueden contar los 0.
Ejemplo rápido:
Salida:
fuente
Si no está especificando la parte else para la declaración de caso, devolverá NULL de forma predeterminada, y en su caso eso es algo bueno, porque count contará los valores no NULL. Si devuelve algo más de mayúsculas y minúsculas, no importa si es 1, 0 o 2, siempre se contará como 1.
Si usaría la suma en lugar del conteo, entonces debería devolver 1 o 0.
fuente