INESEM Business School
Contactar por whatsappWhatsapp

Contacta con nosotros

Teléfono de INESEM 958 050 205
sql server
Te ayudamos a elegir tu formación

Convertir filas en columnas y columnas en filas en SQL Server

En este post quiero hablar de los operadores relacionales PIVOT y UNPIVOT de SQL Server los cuales en una consulta SQL permiten intercambiar los resultados de filas por columnas (referencias cruzadas).

Aunque en este post nos centramos en SQL Server estos operadores están disponibles en otros gestores de Base de Datos como Oracle.

 

Table of Contents

PIVOT

A través de este operador de SQL Server, podemos transformar las filas devueltas mediante una consulta en columnas de valor único.

operador pivot

La sintaxis del este operador sería:

sintaxis pivot

Veamos un ejemplo de uso. Supongamos que disponemos de los siguientes datos:

datos pivot

Al tomar estos datos como entrada, aplicando el operador PIVOT:

datos pivot

Los resultados obtenidos serían:

resultados obtenidos en pivotComo podemos observar, se hace una agrupación por años, aplicando la función de agrupación SUM y los valores únicos de los años se emplean en la salida como columnas.

Si pidiésemos años para los que no existen valores, en las celdas correspondientes se devolvería NULL.

sentencia bis PIVOT

 

UNPIVOT

Para realizar la operación inversa, es decir transformar columnas en filas, usamos el operador de SQL Server llamado UNPIVOT.

Para ver el funcionamiento de UNPIVOT, supongamos que usamos como datos de entrada la siguiente tabla:

tabla de datos unpivot

Si aplicamos el operador UNPIVOT a través de la sentencia:

unpivot sentencia

Los resultados obtenidos serían:

columna unpivot

Que como se puede observar, muestra los datos intercambiando las columnas y cruzando las columnas con las filas originales para obtener la tabla completa.

Por tanto UNPIVOT es el operador opuesto a PIVOT, a excepción que PIVOT ejecuta una función de agregación, mientras transforma los valores de la fila en valores de columna, con lo cual podría fusionar lo valores de múltiples filas en un valor de una sola columna de salida. Por tanto, aplicando a unos datos el operador PIVOT y posteriormente el UNPIVOT, no obtendríamos los datos originales.

En cualquier caso estos dos operadores de SQL Server, como he mostrado a lo largo del post, son muy fáciles de usar y con una sola consulta nos pueden dar mucha información.

Categorizado en: Informática y TICS

Solicita información de nuestros cursos y masters




    Información básica sobre Protección de Datos. Haz clic aquí

    Acepto el tratamiento de mis datos con la finalidad prevista en la información básica

    ¿Quieres más artículos de Informática y TICS ?

    Selecciona la categoría que más te interese

      Comentarios

    1. EMMANUEL dice:

      Gracias me ayudo mucho, tengo una duda.

      Si en ves de una funcion agregada necesito dos, es decir dos SUM ya que tendo dos columna de valores?

    2. Diego dice:

      Dado que parece que no existen dos filas en la tabla original para el mismo país y año, ¿por qué usar SUM? ¿ no podemos usar simplemente PIVOT y dejar que el sistema reordene las filas? ¿Es obligatorio usar una función de agregación incluso si uso la sentencia PIVOT?

      Muchas gracias de antemano.

    3. Agus dice:

      MIL GRACIAS

      Me ha sido muy útil esta página.

    Ver más comentarios

    ¡Descubre los secretos de inesem en nuestro canal de Telegram!

    Artículos más leídos

    Descubre Territorio Inesem

    Disfruta del mejor contenido con los últimos podcast y webinars

    ES EL MOMENTO

    Comienza tu futuro de la mano de INESEM Business School con el programa de

    EXECUTIVE MASTERS

    Únete al selecto grupo de alumnos que han conseguido alcanzar una carrera de éxito en las profesiones más demandadas.

    ÚNETE AL EQUIPO DE REDACCIÓN

    Comparte tu conocimiento con otros profesionales

    Saber más