es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tabla dinámica con una condición.

Considere que tengo una tabla como esta:

ID DEPARTAMENTO
1 Producción
1 TI
2 Ventas
2 Marketing
2 Ventas

¿Cómo puedo obtener un resultado como el siguiente?

ID Producción TI Ventas Marketing
1 1 1 0 0
2 0 0 1 1
2 0 0 1 0

Observará que en la tabla original para el número de ID 2, el departamento “Ventas” se repite, por lo que siempre que se repita un departamento debería haber otra entrada en la tabla pivoteada.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para hacer pivot en la tabla original y obtener el resultado deseado, se puede usar la consulta SQL con GROUP BY, PIVOT y declaraciones CASE de la siguiente manera:

    SELECT ID,
        MAX(CASE WHEN DEPARTMENT = 'Production' THEN 1 ELSE 0 END) AS Producción,
        MAX(CASE WHEN DEPARTMENT = 'IT' THEN 1 ELSE 0 END) AS TI,
        MAX(CASE WHEN DEPARTMENT = 'Sales' THEN 1 ELSE 0 END) AS Ventas,
        MAX(CASE WHEN DEPARTMENT = 'Marketing' THEN 1 ELSE 0 END) AS Marketing
    FROM table_name
    GROUP BY ID;
    

    Esta consulta SQL agrupará los datos por ID y luego utilizará la declaración CASE para crear nuevas columnas para cada departamento con un valor de 1 si el departamento coincide con el ID, de lo contrario, 0. La función PIVOT luego agregará los datos y pivoteará la tabla para obtener el resultado deseado.

    Tenga en cuenta que en este caso, cuando hay múltiples entradas con el mismo nombre de departamento para un solo ID, solo se devolverá una fila con el valor máximo de 1 para ese departamento.

Comments are closed.