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.

Pivotea varias filas (2 columnas) en una sola fila.

Tengo una tabla donde solo tiene 2 columnas, la primera columna es un identificador de nombre y la segunda columna es un valor para este identificador (básicamente, la tabla actúa como valores predeterminados), a continuación se muestra una captura de pantalla de esa tabla.

Imagen de tabla de valores predeterminados

Lo que quiero es convertir la tabla de múltiples filas en una sola fila y los valores se convertirían en columnas con la primera columna como nombre de columna. Por ejemplo, los valores actuales se transformarían en lo siguiente.

Imagen de resultado esperado

He leído sobre el operador PIVOT, sin embargo, requiere una función de agregado en la cláusula pivot, pero no creo que pueda usar una función de agregado en este caso, simplemente establecer valores de fila como valores de columna.
¿Es posible hacer esto con PIVOT o hay otra construcción que debería usar para lograr esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible lograr esto utilizando el operador PIVOT. En este caso, podemos utilizar la función de agregación MAX que no afectará los datos ya que solo tenemos un valor por identificador. A continuación se muestra una consulta de ejemplo:

    SELECT *
    FROM (SELECT name, value FROM default_values)
    PIVOT (MAX(value) FOR name IN ('Rate', 'Quantity', 'Cost', 'Currency')) ;
    

    La subconsulta selecciona las columnas que queremos pivotar (name y value). El operador PIVOT pivota la columna name en columnas separadas con sus valores correspondientes. La cláusula FOR especifica los nuevos nombres de columna que queremos utilizar. Luego podemos seleccionar todas las columnas en el conjunto de resultados. La salida debe coincidir con la captura de pantalla del resultado esperado proporcionada.

Comments are closed.