Transformando linhas em colunas
Nesta lição, você aprendeu que PIVOT transforma os valores exclusivos de uma coluna em várias colunas.
Analisando os dados de paper_shop_monthly_sales, você percebe que a estrutura dessa tabela não é adequada para o relatório que você quer fazer.
Você quer gerar um relatório com esta aparência:
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
Em outras palavras, você quer transformar os dados que estão nas linhas em dados nas colunas e somar as unidades para cada ano.
Como você aprendeu nos exercícios anteriores, o nome dos produtos e as unidades precisam ser separados. Isso é feito no subselect; dê uma olhada nele.
Este exercício faz parte do curso
Limpando dados em bancos de dados SQL Server
Instruções do exercício
- Selecione as colunas pivotadas para cada produto.
- Inclua a soma das unidades dentro do operador
PIVOT. - Após a cláusula
FOR, inclua o nome da coluna que contém os valores que se tornarão cabeçalhos de coluna. - Dê ao operador
PIVOTo nomepaper_shop_pivot.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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 ___