Juniorcase whenpivotagregação
CASE WHEN para pivotar dados
Publicado em 2025-02-22
Pergunta
Como transformar linhas em colunas (pivot) usando apenas CASE WHEN?
Explicação
Nem todo SGBD tem PIVOT nativo. Combinar CASE WHEN com SUM ou MAX dentro de um GROUP BY permite pivotar valores categóricos para colunas.
Query SQL
sql
SELECT
produto,
SUM(CASE WHEN canal = 'web' THEN receita END) AS receita_web,
SUM(CASE WHEN canal = 'mobile' THEN receita END) AS receita_mobile,
SUM(CASE WHEN canal = 'loja' THEN receita END) AS receita_loja
FROM vendas
GROUP BY produto;Resposta esperada
Uma linha por produto, com colunas separadas para cada canal de venda.
Erros comuns
- Usar COUNT(CASE WHEN ... ) sem ELSE 0 e contar NULLs incorretamente
- Não envolver o CASE em uma função agregadora, gerando erro de GROUP BY
Dica de entrevista
Para conjuntos pequenos e estáveis de categorias, CASE WHEN é mais legível que PIVOT.