SQL Server PIVOT (Español)

Resumen: en este tutorial, aprenderá a usar el operador SQL Server PIVOT para convertir filas en columnas.

Configuración de los objetivos

Para la demostración, usaremos production.products y production.categories tablas de la base de datos de muestra:

La siguiente consulta encuentra la cantidad de productos para cada categoría de producto:

Aquí está el resultado:

Nuestro objetivo es convertir los nombres de categoría de la primera columna del resultado en varias columnas y contar la cantidad de productos para cada nombre de categoría como la siguiente imagen:

Además, podemos agregar el año del modelo para agrupar la categ ory por año del modelo como se muestra en el siguiente resultado:

Introducción al operador PIVOT de SQL Server

El operador PIVOT de SQL Server rota una expresión con valores de tabla. Convierte los valores únicos en una columna en varias columnas en la salida y realiza agregaciones en cualquier valor de columna restante.

Siga estos pasos para convertir una consulta en una tabla dinámica:

  • Primero, seleccione un conjunto de datos base para pivotar.
  • En segundo lugar, cree un resultado temporal usando una tabla derivada o una expresión de tabla común (CTE)
  • Tercero, aplique PIVOT operador.

Apliquemos estos pasos en el siguiente ejemplo.

Primero, seleccione el nombre de la categoría y la identificación del producto de la production.products y production.categories como datos base para la pivotación:

En segundo lugar, cree un conjunto de resultados temporal utilizando una tabla derivada:

En tercer lugar, aplique el operador PIVOT:

Esta consulta genera el siguiente resultado:

Ahora, cualquier columna adicional que agregue a la lista de selección de la consulta que devuelve el base los datos formarán automáticamente grupos de filas en la tabla dinámica. Por ejemplo, puede agregar la columna del año del modelo a la consulta anterior:

Aquí está el resultado:

Generando valores de columna

En la consulta anterior, tenía que escribir el nombre de cada categoría entre paréntesis después de IN operador manualmente. Para evitar esto, puede usar la función QUOTENAME() para generar la lista de nombres de categorías y copiarlos sobre la consulta.

Primero, genere la lista de nombres de categorías:

La salida se verá así:

En este fragmento:

  • La función QUOTENAME() envuelve el el nombre de la categoría entre corchetes, por ejemplo,
  • La función LEFT() elimina la última coma de la cadena @columns .

En segundo lugar, copie la lista de nombres de categoría de la salida y péguela en la consulta.

Tablas dinámicas

Si agrega una nuevo nombre de categoría en la tabla production.categories, debe reescribir su consulta, lo cual no es ideal. Para evitar hacer esto, puede usar SQL dinámico para hacer que la tabla dinámica sea dinámica.

En esta consulta, en lugar de pasar una lista fija de nombres de categorías al PIVOT, construimos la lista de nombres de categorías y la pasamos a una declaración SQL, y luego ejecutamos esta declaración dinámicamente usando el procedimiento almacenado sp_executesql.

En este tutorial , ha aprendido a utilizar la tabla PIVOT de SQL Server para convertir filas en columnas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *