ComeçarComece de graça

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

Ver curso

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 PIVOT o nome paper_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 ___
Editar e executar o código