En este artículo veremos cómo convertir Filas a Columnas en SQL Server. En una tabla donde muchas columnas tienen los mismos datos para muchas entradas de la tabla, es recomendable convertir las filas en columnas. Esto ayudará a reducir la tabla y hacerla más legible.
Por ejemplo, supongamos que tenemos una tabla a continuación:
NOMBRE | COLEGA | NÚMERO DE ROLLO | TEMA | MARCAS |
romy | BVP | 0261150 | SGBD | 90 |
romy | BVP | 0261150 | REDES | 87 |
romy | BVP | 0261150 | GRÁFICOS | 95 |
PUSHKAR | MSIT | 0898888 | SGBD | 91 |
PUSHKAR | MSIT | 0898888 | REDES | 90 |
PUSHKAR | MSIT | 0898888 | GRÁFICOS | 78 |
Es mejor si almacenamos los datos de esta tabla como:
NOMBRE | COLEGA | NÚMERO DE ROLLO | SGBD | REDES | GRÁFICOS |
romy | BVP | 0261150 | 90 | 87 | 95 |
PUSHKAR | MSIT | 0898888 | 91 | 90 | 78 |
Podemos convertir filas en columnas usando la función PIVOT en SQL.
Sintaxis:
SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias); //Alias is a temporary name for a table
Para el propósito de la demostración, crearemos una demo_table en una base de datos llamada «geeks».
Paso 1: Creación de la base de datos
Use la siguiente instrucción SQL para crear una base de datos llamada geeks.
Consulta:
CREATE DATABASE geeks;
Paso 2 : Uso de la base de datos
Use la siguiente instrucción SQL para cambiar el contexto de la base de datos a geeks.
Consulta:
USE geeks;
Paso 3: definición de la tabla
Tenemos la siguiente demo_table en la base de datos de nuestro geek.
Consulta:
CREATE TABLE demo_table( NAME varchar(30), COLLEGE varchar(30), EXAM_DATE DATE, SUBJECTS varchar(30), MARKS int);
Paso 4: Insertar datos en la tabla
Consulta:
INSERT INTO demo_table VALUES ('ROMY', 'BVCOE', '12-OCT-2021', 'DBMS', 90), ('ROMY', 'BVCOE', '12-OCT-2021', 'NETWORKING', 90), ('ROMY', 'BVCOE', '12-OCT-2021', 'GRAPHICS', 100), ('ROMY', 'BVCOE', '12-OCT-2021', 'CHEMISTRY', 98), ('ROMY', 'BVCOE', '12-OCT-2021', 'MATHEMATICS', 78), ('PUSHKAR', 'MSIT', '14-OCT-2021', 'NETWORKING' , 97), ('PUSHKAR', 'MSIT', '14-OCT-2021', 'GRAPHICS', 98), ('PUSHKAR', 'MSIT', '14-OCT-2021', 'CHEMISTRY', 79), ('PUSHKAR', 'MSIT', '14-OCT-2021', 'MATHEMATICS', 79), ('PUSHKAR', 'MSIT', '14-OCT-2021', 'DBMS', 79);
Paso 5: Ver el contenido de la tabla
Use el siguiente comando para ver el contenido de demo_table:
Consulta:
SELECT * FROM demo_table;
Producción:
Paso 6: Usar la función de pivote para convertir una fila en una columna.
Consulta:
SELECT * FROM demo_table PIVOT (AVG(MARKS) FOR SUBJECTS IN (DBMS,NETWORKING, GRAPHICS, CHEMISTRY, MATHEMATICS)) AS PivotTable;
Hemos utilizado la función de agregado PROMEDIO porque el promedio de un valor es el valor en sí mismo.
Producción:
Podemos ver que las filas se transforman en columnas.
Publicación traducida automáticamente
Artículo escrito por romy421kumari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA