MSDN documentation states:
COUNT(*) returns the number of items in a group. This includes NULL values and duplicates.
How can
You can have a Null value in a row depending on how you do your joins. Be sure you are counting the right field or correcting your joins.
If you have this table
Table1:
Field1 Field2 Field3
---------------------------
1 1 1
NULL NULL NULL
2 2 NULL
1 3 1
Then
SELECT COUNT(*), COUNT(Field1), COUNT(Field2), COUNT(DISTINCT Field3)
FROM Table1
Output Is:
COUNT(*) = 4; -- count all rows, even null/duplicates
-- count only rows without null values on that field
COUNT(Field1) = COUNT(Field2) = 3
COUNT(Field3) = 2
COUNT(DISTINCT Field3) = 1 -- Ignore duplicates