none
CONTAR CAMPOS DE UNA TABLA SEGUN PARAMETRO RRS feed

  • Pregunta

  • Tengo una tabla con tres notas

    Tabla Notas

     Codigo             Nota1     Nota2     Nota3

         Ter1               WA        B

         Ter2                 A

         Ter3               WA       F            B

         Ter4

    los que quiero es contar las notas por codigo osea aunque tenga dos notas o tres notas solo cuenta por 1 y cuando esten todas en blanco como en el caso de ter4 pues es 0. en este caso concreto solo tendria 3 notas por que el ter4 esta en blanco

    martes, 22 de octubre de 2019 15:00

Respuestas

  • Hola Efrain Diaz:

    declare @tableNotas table (codigo varchar(10), Nota1 varchar(10), nota2 varchar(10), nota3 varchar(10))
    insert into @tableNotas (codigo, Nota1, nota2, nota3)
    values
    ('Ter1' , 'WA', 'B', NULL),
    ('Ter2' , 'A', NULL, NULL),
    ('Ter3' , 'WA', 'F', 'B'),
    ('Ter4' , NULL, NULL, NULL);
    
    SELECT COUNT(COALESCE(NOTA1,NOTA2,NOTA3))
    FROM @tableNotas
    

    Resultado

    ¿Es lo que necesitas?

    • Propuesto como respuesta Pablo RubioModerator martes, 22 de octubre de 2019 22:20
    • Marcado como respuesta Efrain Diaz miércoles, 23 de octubre de 2019 12:58
    martes, 22 de octubre de 2019 16:19

Todas las respuestas

  • Hola Efrain Diaz

     

    Gracias por levantar tu consulta en los foros de MSDN. Con respecto a la misma,  te comento que para  que la comunidad de foros te pueda asesorar mejor, es necesario que nos compartas el form/code que estás desarrollando

     

     

    Gracias por usar los foros de MSDN.

     

    Pablo Rubio

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    martes, 22 de octubre de 2019 16:17
    Moderador
  • Hola Efrain Diaz:

    declare @tableNotas table (codigo varchar(10), Nota1 varchar(10), nota2 varchar(10), nota3 varchar(10))
    insert into @tableNotas (codigo, Nota1, nota2, nota3)
    values
    ('Ter1' , 'WA', 'B', NULL),
    ('Ter2' , 'A', NULL, NULL),
    ('Ter3' , 'WA', 'F', 'B'),
    ('Ter4' , NULL, NULL, NULL);
    
    SELECT COUNT(COALESCE(NOTA1,NOTA2,NOTA3))
    FROM @tableNotas
    

    Resultado

    ¿Es lo que necesitas?

    • Propuesto como respuesta Pablo RubioModerator martes, 22 de octubre de 2019 22:20
    • Marcado como respuesta Efrain Diaz miércoles, 23 de octubre de 2019 12:58
    martes, 22 de octubre de 2019 16:19
  • Deleted
    martes, 22 de octubre de 2019 17:55
  • si, contiene null
    martes, 22 de octubre de 2019 19:14
  • Hola Efrain Diaz:

    Para contar por código.

    declare @tableNotas table (codigo varchar(10), Nota1 varchar(10), nota2 varchar(10), nota3 varchar(10))
    insert into @tableNotas (codigo, Nota1, nota2, nota3)
    values
    ('Ter1' , 'WA', 'B', NULL),
    ('Ter2' , 'A', NULL, NULL),
    ('Ter3' , 'WA', 'F', 'B'),
    ('Ter4' , NULL, NULL, NULL);
    
    ;with cte as (
    	SELECT  codigo, 
    			case when nota1 is null then 0 else 1 end as nota1,
    			case when nota2 is null then 0 else 1 end as nota2,
    			case when nota3 is null then 0 else 1 end as nota3
    
    	FROM @tableNotas
    	)select c.codigo, 
    			c.nota1+c.nota2+c.nota3 as cuenta 
    		from cte c

    Salida

    Si deseas que no salga Ter4

    declare @tableNotas table (codigo varchar(10), Nota1 varchar(10), nota2 varchar(10), nota3 varchar(10))
    insert into @tableNotas (codigo, Nota1, nota2, nota3)
    values
    ('Ter1' , 'WA', 'B', NULL),
    ('Ter2' , 'A', NULL, NULL),
    ('Ter3' , 'WA', 'F', 'B'),
    ('Ter4' , NULL, NULL, NULL);
    
    ;with cte as (
    	SELECT  codigo, 
    			case when nota1 is null then 0 else 1 end as nota1,
    			case when nota2 is null then 0 else 1 end as nota2,
    			case when nota3 is null then 0 else 1 end as nota3
    
    	FROM @tableNotas
    	)select c.codigo, 
    			c.nota1+c.nota2+c.nota3 as cuenta 
    		from cte c
    		where c.nota1+c.nota2+c.nota3 > 0

    martes, 22 de octubre de 2019 19:35
  • Deleted
    martes, 22 de octubre de 2019 21:20