Explorando los operadores PIVOT y UNPIVOT en SQL para generar declaraciones SELECT dinámicas para números arbitrarios. Transformando datos entre forma de fila y columna para manejar de forma dinámica números variables de columnas.

Explorando los operadores PIVOT y UNPIVOT en SQL

En SQL, los operadores PIVOT y UNPIVOT son herramientas poderosas para transformar datos entre forma de fila y columna. En este artículo, exploraremos cómo utilizar estos operadores para generar declaraciones SELECT dinámicas para números arbitrarios de columnas.

Operador PIVOT

El operador PIVOT es utilizado para convertir filas en columnas, lo que puede ser útil cuando tienes datos en una tabla en forma de fila y deseas mostrarlos en una tabla en forma de columna.

Aquí tienes un ejemplo de cómo utilizar el operador PIVOT:

SQL
SELECT *FROM (    SELECT columna1, columna2, columna3    FROM tabla) AS tPIVOT (    MAX(columna3)    FOR columna2 IN ([valor1], [valor2], [valor3])) AS p;

En este ejemplo, utilizamos la cláusula PIVOT para convertir los valores de la columna2 en columnas individuales en forma de columna.

Operador UNPIVOT

Por otro lado, el operador UNPIVOT se utiliza para convertir columnas en filas. Esto puede ser útil cuando tienes datos en una tabla en forma de columna y deseas mostrarlos en una tabla en forma de fila.

Aquí tienes un ejemplo de cómo utilizar el operador UNPIVOT:

SQL
SELECT columna1,       columna2,       columna3FROM (    SELECT *    FROM tabla) AS tUNPIVOT (    valor    FOR columnas_en_filas IN ([valor1], [valor2], [valor3])) AS u;

En este ejemplo, utilizamos la cláusula UNPIVOT para convertir las columnas individuales en filas en forma de columna.

Generación dinámica de declaraciones SELECT

Una característica poderosa de los operadores PIVOT y UNPIVOT es su capacidad para generar declaraciones SELECT de forma dinámica para manejar números arbitrarios de columnas.

Aquí tienes un ejemplo de cómo generar una declaración SELECT dinámica utilizando el operador PIVOT:

SQL
DECLARE @columnas NVARCHAR(MAX);SET @columnas = (SELECT DISTINCT '[' + columna2 + ']' + ', '                FROM tabla                FOR XML PATH(''));SET @columnas = LEFT(@columnas, LEN(@columnas) - 1);DECLARE @query NVARCHAR(MAX);SET @query = 'SELECT *              FROM (SELECT columna1, columna2, columna3                    FROM tabla) AS t              PIVOT (                  MAX(columna3)                  FOR columna2 IN (' + @columnas + ')              ) AS p;';EXECUTE(@query);

En este ejemplo, generamos dinámicamente una lista de columnas y construimos una declaración SELECT utilizando esas columnas.

Conclusión

Los operadores PIVOT y UNPIVOT son herramientas valiosas en SQL para transformar datos entre formas de fila y columna. Al utilizar estos operadores, puedes generar declaraciones SELECT dinámicas para manejar de forma eficiente números variables de columnas. ¡Esperamos que esta guía te sea útil en tus proyectos SQL!

Comentarios

Entradas populares