SQL Pivot: sepa cómo convertir filas en columnas



Este artículo sobre SQL Pivot es una guía completa sobre cómo convertir los datos de nivel de fila en datos en columnas con ejemplos detallados.

Relacional almacenar enormes cantidades de datos en forma de tablas. Estas tablas pueden tener cualquier número de filas y columnas. Pero, ¿qué pasaría si tuviera que cambiar los datos de nivel de fila a datos en columnas? Bueno, en este artículo sobre SQL Pivot, le mostraré cómo puede convertir filas en una columna en un SQL Server.

Los siguientes temas se tratarán en este artículo:





¿Qué es PIVOT en SQL?

PIVOT se utiliza para rotar el valor de la tabla convirtiendo los valores únicos de una sola columna en múltiples columnas. Se utiliza para rotar las filas a valores de columna y ejecuta agregaciones cuando es necesario en los valores de columna restantes.

UNPIVOT, en cambio, se utiliza para realizar las operaciones contrarias. Entonces, se usa para convertir las columnas de una tabla específica en valores de columna.



Continuando en este artículo, entendamos la sintaxis de SQL Pivot.

Sintaxis:

SELECT NonPivoted ColumnName, [First Pivoted ColumnName] AS ColumnName, [Second Pivoted ColumnName] AS ColumnName, [Third Pivoted ColumnName] AS ColumnName, ... [Last Pivoted ColumnName] AS ColumnName FROM (SELECCIONAR la consulta que produce los datos) AS [alias para la consulta inicial] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName de la columna cuyos valores se convertirán en encabezados de columna] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last columna dinámica])) AS [alias de la tabla dinámica]

Aquí,también puedes usar el Cláusula ORDER BY para ordenar los valores en orden ascendente o descendente. Ahora que sabe qué es PIVOT en SQL y su sintaxis básica, sigamos adelante y veamos cómo usarlo.

Ejemplos

Para su mejor comprensión, consideraré la siguiente tabla para explicarle todos los ejemplos.



Tabla de proveedores:

Identificación del proveedor Días de fabricación Costo Identificación del cliente ID de compra
112123011P1
221154322P2
332234511P3
414876522P1
542345233P3
631543133P1
741234211P2
854365422P2
933123411P3
1056683233P2

Escribamos una consulta simple para recuperar el costo promedio gastado por cada cliente.

SELECCIONE CustomerID, AVG (Cost) AS AverageCostofCustomer FROM Proveedores GROUP BY CustomerID

Salida:

Identificación del cliente Costo Promedio del Cliente
111787.75
224654
335238.33

Ahora, digamos que queremos pivotar la tabla anterior. Aquí, los valores de la columna CustomerID se convertirán en los encabezados de columna.

- Cree una tabla dinámica con una fila y tres columnas SELECCIONE 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT (AVG (Cost) FOR CustomerID IN ( [11], [22], [33])) AS tabla dinámica

Salida:

Cost_According_To_Customers 112233
Costo Promedio del Cliente 1787.7546545238.33

Nota: Cuando usas Funciones agregadas con PIVOT, los valores nulos no se consideran al calcular una agregación.

Bueno, ese fue un ejemplo básico, pero ahora entendamos cómo funcionaba la cláusula PIVOT.

Funcionamiento de la cláusula PIVOT

Como puede consultar arriba, para crear una TABLA PIVOT, debe seguir los pasos a continuación:

  • Seleccionar columnas para pivotar
  • Luego, seleccione una tabla de origen.
  • Aplique el operador PIVOT y luego use las funciones agregadas.
  • Mencione los valores de pivote.

Seleccionar columnas para pivotar

Inicialmente, tenemos que especificar los campos que se incluirán en nuestros resultados. En nuestro ejemplo, consideré la columna AverageCostofCustomer en la tabla dinámica. Luego creamos otras tres columnas con los encabezados de columna 11, 22 y 33. Ejemplo-

SELECCIONE 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33]

Seleccionar tabla de origen

A continuación, debe especificar la instrucción SELECT que devolverá los datos de origen para la tabla dinámica. En nuestro ejemplo, devolvemos el CustomerID y el Costo de la tabla Proveedores.

(SELECCIONE ID de cliente, costo de proveedores) AS SourceTable

Aplicar el operador PIVOT y luego usar las funciones agregadas

A continuación, debe especificar la función agregada que se utilizará al crear la tabla dinámica. En nuestro ejemplo, utilicé la función AVG para calcular el costo promedio.

ansible vs chef vs marioneta
PIVOT (AVG (costo)

Mencionar valores de pivote

Finalmente, debe mencionar los valores que deben incluirse en la tabla dinámica resultante. Estos valores se utilizarán como encabezados de columna en la tabla dinámica.

PARA CustomerID IN ([11], [22], [33])) COMO tabla dinámica

Así es como funcionan los operadores PIVOT. Continuando en este artículo sobre SQL PIVOT, entendamos cuán diferente es de SQL UNPIVOT.

SQL UNPIVOT

El operador SQL UNPIVOT se utiliza para realizar la operación opuesta a la de PIVOT. Se utiliza para rotar los datos de la columna en datos de nivel de fila. La sintaxis de UNPIVOT es similar a la de PIVOT. La única diferencia es que tienes que usar el “ UNPIVOT ' .

Ejemplo:

Creemos una tabla con las columnas SupplierID, AAA, BBB y CCC. Además, inserte algunos valores.

CREATE TABLE sampletable (SupplierID int, AAA int, BBB int, CCC int) IR INSERT INTO sampletable VALUES (1,3,5,6) INSERT INTO sampletable VALUES (2,9,2,8) INSERT INTO sampletable VALUES (3, 8,1,7) IR

Salida:

Identificación del proveedor AAA BBB CCC
1356
2928
3817

Ahora, digamos, queremos desvincular la mesa. Para hacer eso, puede consultar el siguiente código:

SELECCIONE ID de proveedor, Clientes, Productos DE (SELECCIONE ProveedorD, AAA, BBB, CCC DE la tabla de muestra) p UNPIVOT (Productos PARA Clientes EN (AAA, BBB, CCC)) COMO ejemplo IR
Identificación del proveedor Clientes Productos

1

AAA

3

1

BBB

5

1

CCC

6

2

AAA

9

2

BBB

2

2

CCC

8

3

AAA

8

3

BBB

1

3

CCC

7

Así es como puede utilizar SQL PIVOT y UNPIVOT. Con esto, llegamos al final de este artículo. Espero que hayas entendido cómo usar SQL. Si desea obtener más información sobre MySQL y conozca esta base de datos relacional de código abierto, luego consulte nuestra que viene con capacitación en vivo dirigida por un instructor y experiencia en proyectos de la vida real. Esta capacitación lo ayudará a comprender MySQL en profundidad y lo ayudará a dominar el tema.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este artículo sobre SQL Pivot y me comunicaré con usted.