SQL Server: Cláusula PIVOT


Ejemplo

La cláusula PIVOT se puede utilizar en SQL Server (Transact-SQL).

Veamos un ejemplo. Si tuviéramos una tabla de empleados que contuviera los siguientes datos:

número_empleado apellido primer_nombre salario dept_id
12009 Sutherland Barbara 54000 45
34974 Yates Fred 80000 45
34987 Erickson Neil 42000 45
45001 Parker Sally 57500 30
75623 Puertas Steve 65000 30

Y ejecutamos la siguiente declaración SQL que crea una tabla cruzada en la consulta usando la cláusula PIVOT:

Devolvería el siguiente resultado:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Este ejemplo crearía una tabla dinámica para mostrar el salario total para dept_id 30 y dept_id 45. Los resultados se muestran en una fila con los dos departamentos que aparecen cada uno en su propia columna.

Ahora, separemos la cláusula PIVOT y expliquemos cómo funcionó.

Especifique las columnas en los resultados de la tabulación cruzada

Primero, queremos especificar qué campos incluir en nuestros resultados de tabulación cruzada. En este ejemplo, queremos incluir el valor literal «TotalSalary» como la primera columna de la tabla dinámica. Y queremos crear una columna para dept_id 30 y una segunda columna para dept_id 45. Esto nos da 3 columnas en nuestra tabla dinámica.

SELECT "TotalSalary" AS TotalSalaryByDept, , 

Especifique la fuente Datos de tabla

A continuación, debemos especificar una instrucción SELECT que devolverá los datos de origen para la tabla dinámica.

En este ejemplo, queremos devolver los valores dept_id y salario de la tabla de empleados:

(SELECT dept_id, salary FROM employees) AS SourceTable

Debe especificar un alias para la consulta de origen. En este ejemplo, hemos asignado un alias a la consulta como SourceTable.

Especificar función agregada

A continuación, debemos especificar qué función agregada usar al crear nuestra consulta de tabulación cruzada. Puede usar cualquier agregado, como las funciones SUM, COUNT, MIN, MAX o AVG.

En este ejemplo, usaremos la función SUM. Esto sumará los valores de salario:

PIVOT(SUM(salary)

Especificar valores dinámicos

Por último, debemos especificar qué valores dinámicos incluir en nuestros resultados . Estos se utilizarán como encabezados de columna en nuestra consulta de tabulación cruzada.

En este ejemplo, solo devolveremos los valores dept_id de 30 y 45. Estos valores se convertirán en nuestros encabezados de columna en nuestro pivote. mesa. Además, tenga en cuenta que estos valores son una lista finita de los valores dept_id y no necesariamente contendrán todos los valores posibles.

FOR dept_id IN (, )

Ahora, cuando lo pongamos todo junto, obtenemos la siguiente tabla dinámica:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Leave a Reply

Deja una respuesta

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