none
Contar valores en varias columnas RRS feed

  • Pregunta

  • Hola gente, que tal?
    Les hago una consulta, talvez es basica, pero no entiendo mucho de sql.
    Tengo la siguiente tabla, con unos 10000 registros:

    id valor1 valor2 valor3 valor4 valor5 valor6

    En las columnas VALOR, tengo cargados numeros del 00 al 99.

    Lo que necesito saber, es cuales son los numeros que mas se repiten pero en todas las columnas.
    Por ejemplo, esto es lo que me gustaria obtener como output:

    VALOR CANTIDAD
    00    1000 (SE REPITE 1000 VECES)
    11    999 (SE REPITE 999 VECES)
    21    888 (SE REPITE 888 VECES)

    Osea, lo que necesito es un query que busque en cada columna y me diga cuantas veces se repite un numero.

    Muchas gracias
    lunes, 24 de agosto de 2015 13:28

Respuestas

  • Hola oknarf1976,

    Algo muy simple de hacer (en tanto tus columnas no sean muchas) es crear un sólo conjunto de datos uniendo conjuntos de datos basados en columnas de la misma tabla. 

    WITH CTE AS (
        SELECT valor1 AS [VALOR] FROM MiTabla
        UNION ALL 
        SELECT valor2 FROM MiTabla
        UNION ALL
        SELECT valor3 FROM MiTabla 
        UNION ALL
        SELECT valor4  FROM MiTabla
        UNION ALL
        SELECT valor5  FROM MiTabla
        UNION ALL
        SELECT valor6 FROM MiTabla)
    
    SELECT VALOR, COUNT(*) FROM CTE GROUP BY VALOR;


    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ


    lunes, 24 de agosto de 2015 16:37

Todas las respuestas

  • hola,

    Puedes tratar de esta manera,

    SELECT	
    	Y.Valor,
    	Count(*) AS Cantidad
    FROM
    	TuTabla AS T
    	CROSS APPLY
    	(
    	SELECT
    		X.Valor
    	FROM
    	    (
    	    VALUES
    	        (T.[valor1]),
    	        (T.[valor2]),
    	        (T.[valor3]),
    	        (T.[valor4]),
    	        (T.[valor5]),
    	        (T.[valor6])	       
    	    ) AS X(Valor)	
    	) AS Y
    GROUP BY
    	Y.Valor;

    Saludos,


    Ayacucho - Perú
    Recuerda si mi solución atiende tu consulta por favor márcala como útil y como respuesta.

    http://litigiouslobo.blogspot.com/
    El Blog de Herbert Mendoza

    • Propuesto como respuesta HunchbackMVP lunes, 24 de agosto de 2015 13:58
    lunes, 24 de agosto de 2015 13:46
  • Hola oknarf1976,

    Algo muy simple de hacer (en tanto tus columnas no sean muchas) es crear un sólo conjunto de datos uniendo conjuntos de datos basados en columnas de la misma tabla. 

    WITH CTE AS (
        SELECT valor1 AS [VALOR] FROM MiTabla
        UNION ALL 
        SELECT valor2 FROM MiTabla
        UNION ALL
        SELECT valor3 FROM MiTabla 
        UNION ALL
        SELECT valor4  FROM MiTabla
        UNION ALL
        SELECT valor5  FROM MiTabla
        UNION ALL
        SELECT valor6 FROM MiTabla)
    
    SELECT VALOR, COUNT(*) FROM CTE GROUP BY VALOR;


    Si la solución propuesta atendió su consulta no olvide marcarla como respuesta.

    Willams Morales
    Arequipa - PERÚ


    lunes, 24 de agosto de 2015 16:37