lunes, 4 de febrero de 2013

Conteo Condicional en SQL Server


Conteo Condicional en SQL Server
Recientemente he tenido la necesidad de hacer un conteo de datos condicional en SQL Server, lo que en Excel es un CONTAR.SI, aprovechando la ocasión decidí documentar con ejemplo la tarea, para futuras oportunidades
Suponiendo contamos con una tabla llamada ProductList, con los datos que se muestran en la imagen de abajo y  necesitamos contar los productos mayores a 0 de la categoría “Condiments”.
Pues bien antes de realizar el conteo debemos tener en cuenta que la función COUNT() de SQL Server si la usamos como COUNT(*) contara todas las filas, por ejemplo
SCRIPT
RESULTADO
Select Count(*) from Productlist
 

 
Y si lo que contamos es un campo de la tabla por ejemplo COUNT(UNITPRICE), como en el ejemplo UNITPRICE tiene valores nulos en productos de la categoría “Seafood” estos no los contara.
SCRIPT
RESULTADO
Select Count(UnitPrice) from Productlist
 

 
Ahora como lo que necesitamos es contar los productos mayores que 0 de la categoría “Condiments”,  si volviéramos Nulos los valores en 0 no los contaría, para esto usaremos la instrucción CASE
 
SCRIPT
RESULTADO
Select Categoryname, Productname,
(CASE Unitprice WHEN 0 THEN NULL ELSE Unitprice END) as Precio
from Productlist
where Categoryname='Condiments'
 
 

 
Finalmente usamos, nuevamente la función COUNT, pero esta vez encerrando la función CASE creada.
SCRIPT
RESULTADO
Select count(CASE Unitprice WHEN 0 THEN NULL ELSE Unitprice END) as Total
from Productlist
where Categoryname='Condiments'
 

 
Fuente de apoyo para la intruccion CASE
 
 

No hay comentarios:

Publicar un comentario