Esto es poco complicado. Supongamos que la tabla tiene sólo una columna, entonces el Conde (1) y el conde (*) dará a 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
Query Results
Como se puede ver en la imagen, el primer resultado muestra la tabla tiene 16 filas. de las cuales dos filas son NULL. Así que cuando usamos Count (*) el motor de consulta cuenta el número de filas, así que nos dieron como resultado del recuento 16. Sin embargo, en caso de Count (empid) contaba los valores no nulos en la columna empid . Así que obtuvimos el resultado como 14.
así que cada vez que usemos COUNT (Columna) asegúrese de que nos ocupamos de los valores NULL como se muestra a continuación.
select COUNT(isnull(empid,1)) from @table1
contarán los valores NULL y Non-NULL.
Nota: Lo mismo se aplica incluso cuando la mesa está compuesta por más de una columna. El recuento (1) dará el número total de filas, independientemente de los valores NULL/Non-NULL. Solo cuando los valores de la columna se cuentan usando Count (Column) necesitamos cuidar los valores NULL.
Hola, ¿dónde necesita este tipo de código de base de datos de conteo en qué base de datos de idiomas somos t alking Saludos cordiales, Iordan – IordanTanev
Me sorprende que ninguna respuesta contenga una simple unión de select count (*) ... –
@Lieven: ¿Por qué diablos usarías una 'unión' aquí? La respuesta de Montecristo es, de lejos, la mejor solución. – Eric