Esto es un poco complicado. Suponga que la tabla tiene solo una columna, entonces el Conteo (1) y el Conteo (*) darán valores diferentes.
set nocount on
declare @table1 table (empid int)
insert @table1 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(NULL),(11),(12),(NULL),(13),(14);
select * from @table1
select COUNT(1) as "COUNT(1)" from @table1
select COUNT(empid) "Count(empid)" from @table1
Resultados de consultas
Como puede ver en la imagen, el primer resultado muestra que la tabla tiene 16 filas. de las cuales dos filas son NULL. Entonces, cuando usamos Count (*), el motor de consulta cuenta el número de filas, así que obtuvimos el resultado de la cuenta como 16. Pero en el caso de Count (empid) contó los valores no NULL en la columna vacía . Entonces obtuvimos el resultado como 14.
así que cada vez que usemos COUNT (Columna) asegúrese de cuidar los valores NULL como se muestra a continuación.
select COUNT(isnull(empid,1)) from @table1
contará los valores NULL y Non-NULL.
Nota : Lo mismo se aplica incluso cuando la tabla está compuesta por más de una columna. Count (1) dará el número total de filas independientemente de los valores NULL / Non-NULL. Solo cuando los valores de la columna se cuentan utilizando Count (Column) necesitamos cuidar los valores NULL.