locked
Contar registros SQL! RRS feed

  • Pregunta

  • Disculpen por poner dos veces la misma pregunta pero creo que esta está, mejor formulada, gracias.

    Deseo contar todas las P de esta tabla sin repetir el periodo(CCENE06, CONY06, CPER06) es decir en esta imagen la cantidad de P que tiene una registro determinado(EREG06) es 19, pero cuando usted cuenta las cantidad de P que tienen la imagen serian 21  P . Llevo dos dias y no logro realizar una consulta que me lo cuente bien. Decir que las columnas(CT#106,CT#206,CT#306,CT#406,CT#506,CT#606) no solo aparecen P tambien aparecen C y N.


    La idea es esa contar todas las P pero sin repetirlas en el mismo periodo. Es decir cuando las agrupas por ejemplo que es lo que logrado hacer:

    201306   1  1  1  1  0   0

    201307   1  1  1  1  3   0

    201308  2  1  1  1  0   0

    201309  1  1  1  1  1   0

    Este es el  codigo que utilizo para obtener lo que muestro, solo me quedaria sumar el resultado, que en total tendrias 21 P.

    Select DISTINCT CONCAT(CONCAT(CCEN06,CONY06),CPER06), count((Case when CT#106 = 'P' Then 1 ELSE Null END)) as CT#106, count((Case when CT#206 = 'P' Then 1 ELSE Null END )) as CT#206, count((Case when CT#306 = 'P' Then 1 ELSE Null END)) as CT#306, count((Case when CT#406 = 'P' Then 1 ELSE Null END)) as CT#406, count((Case when CT#506 = 'P' Then 1 ELSE Null END)) as CT#506, count((Case when CT#606 = 'P' Then 1 ELSE Null END)) as CT#606 FROM Mi TABLA Where EREG06 = 1629401 And ACTV06 = 'A' And EGIE06 <> 0

    GROUP BY CCEN06,CONY06, CPER06

    Pero realmente lo que quiero es contar esto:

    201306   1  1  1  1  0   0

    201307   1  1  1  1  1   0

    201308  1  1  1  1  0   0

    201309  1  1  1  1  1   0

    serian 18 P, sin repetir las P que seria semanas trabajadas, no importa que la persona haya trabajado en la misma semana dos veces, yo solo tomare 1 porque realmente fue una sola semana que ella trabajo, realmente los datos los quiero mostrar en VB.Net, leyendolos de AS400, pero con la logica en SQL lo puedo adaptar a mis necesidades. Gacias  realmente necesito esta consulta, ayuda por favor.

    Saludos

    Yo 



    lunes, 8 de mayo de 2017 15:46

Respuestas

  • Hola SPALACIO,

    Gracias por visitar los foros, al parecer esta pregunta se encuentra duplicada dentro del foro, por lo cual para mantener el orden dentro del mismo, seguiremos la consulta en esta pregunta  y bloqueamos la pregunta actual.


    Saludos

    Joyce

    __________________________________________________________________________________________
    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, 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.

    lunes, 8 de mayo de 2017 21:51
    Moderador

Todas las respuestas

  • SPALACIO,

    Contestdada en el otro hilo.

    No habras multiples hilos con la misma pregunta. La probalidad de que obtengas una respuesta no esta en cuantas veces postees la pregunta sino en la calidad de la pregunta (esquema de tablas, data de ejemplo en forma de sentencias INSERT, asi como el resultado esperado).


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas

    lunes, 8 de mayo de 2017 16:10
  • Gracias lo se pero solo aqui lo explicaba mejor  mira lo que he tratado de hacer pero lo calcula perfecto pero semana a semana.

      Select Count(CT#106) From( Select DISTINCT CONCAT(CONCAT(CCEN06,CONY06),CPER06), count((Case when CT#106 = 'P' Then 1 ELSE Null END)) as CT#106      
                                                                               
                                                              FROM  "MI TABLA" Where EREG06 = 1629401 And ACTV06 = 'A' And EGIE06 <> 0  
                                                              GROUP BY CCEN06,CONY06, CPER06
                                                          ) AS XX where CT#106 >=1 
                                             
                                             
        Select Count(CT#206) From( Select DISTINCT CONCAT(CONCAT(CCEN06,CONY06),CPER06), count((Case when CT#206 = 'P' Then 1 ELSE Null END)) as CT#206      
                                                                               
                                                              FROM  "MI TABLA" Where EREG06 = 1629401 And ACTV06 = 'A' And EGIE06 <> 0  
                                                              GROUP BY CCEN06,CONY06, CPER06
                                                          ) AS XX where CT#206 >=1 
                                             

    lunes, 8 de mayo de 2017 16:23
  • Hola SPALACIO,

    Gracias por visitar los foros, al parecer esta pregunta se encuentra duplicada dentro del foro, por lo cual para mantener el orden dentro del mismo, seguiremos la consulta en esta pregunta  y bloqueamos la pregunta actual.


    Saludos

    Joyce

    __________________________________________________________________________________________
    Por favor, recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, 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.

    lunes, 8 de mayo de 2017 21:51
    Moderador