Convertir filas en columnas
En esta lección, has aprendido que PIVOT convierte los valores únicos de una columna en varias columnas.
Al analizar los datos de paper_shop_monthly_sales, te das cuenta de que la estructura de esta tabla no es adecuada para el informe que quieres crear.
Quieres generar un informe con este aspecto:
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
En otras palabras, quieres pasar los datos que tienes en filas a datos en columnas y sumar las unidades de cada año.
Como aprendiste en los ejercicios anteriores, el nombre de los productos y las unidades debe separarse. Esto se hace en la subconsulta; échale un vistazo.
Este ejercicio forma parte del curso
Limpieza de datos en bases de datos SQL Server
Instrucciones del ejercicio
- Selecciona las columnas pivotadas para cada producto.
- Incluye la suma de las unidades dentro del operador
PIVOT. - Después de la cláusula
FOR, incluye el nombre de la columna que contiene los valores que se convertirán en encabezados de columna. - Asigna al operador
PIVOTel nombrepaper_shop_pivot.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
SELECT
year_of_sale,
-- Select the pivoted columns
___,
___,
___
FROM
(SELECT
SUBSTRING(product_name_units, 1, charindex('-', product_name_units)-1) product_name,
CAST(SUBSTRING(product_name_units, charindex('-', product_name_units)+1, len(product_name_units)) AS INT) units,
year_of_sale
FROM paper_shop_monthly_sales) sales
-- Sum the units for column that contains the values that will be column headers
PIVOT (SUM(___) FOR ___ IN (notebooks, pencils, crayons))
-- Give the alias name
AS ___