Consulta SQL para convertir filas en columnas en SQL Server

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

Deja una respuesta

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