Isso é um pouco complicado. Suponha que a tabela tenha apenas uma coluna e, em seguida, o Count (1) e o Count (*) fornecerão 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 da consulta
Como você pode ver na imagem, o primeiro resultado mostra que a tabela possui 16 linhas. das quais duas linhas são NULL. Então, quando usamos Count (*), o mecanismo de consulta conta o número de linhas; portanto, obtemos o resultado como 16. Mas, no caso de Count (empid), ele contava os valores que não são NULL na coluna empid . Então obtivemos o resultado como 14.
portanto, sempre que estivermos usando COUNT (coluna), certifique-se de cuidar dos valores NULL conforme mostrado abaixo.
select COUNT(isnull(empid,1)) from @table1
contará os valores NULL e Non-NULL.
Nota : O mesmo se aplica mesmo quando a tabela é composta por mais de uma coluna. Count (1) fornecerá o número total de linhas, independentemente dos valores NULL / Non-NULL. Somente quando os valores da coluna são contados usando Count (Column), precisamos cuidar dos valores NULL.