O recurso PIVOT, introduzido no Oracle 11g, facilita a criação de relatórios de negócios e análises de dados, permitindo que os usuários transformem os dados das linhas em colunas. No Oracle 12c, essa funcionalidade continua sendo uma poderosa ferramenta para manipulação de dados. Neste artigo, vamos explorar duas aplicações práticas de consultas PIVOT no Oracle 12c.
Exemplo 1: Vendas por Ano
Imagine que temos uma tabela de vendas que registra a quantidade de produtos vendidos a cada ano. A tabela possui três colunas: ANO
, PRODUTO
e QUANTIDADE
.
SELECT * FROM VENDAS;
ANO PRODUTO QUANTIDADE
---- ------- ----------
2019 Laptop 120
2019 Celular 200
2020 Laptop 150
2020 Celular 210
2021 Laptop 180
2021 Celular 230
Queremos transformar esses dados para ver a quantidade vendida de cada produto por ano em colunas separadas. Usaremos o PIVOT para realizar essa tarefa.
SELECT * FROM
(
SELECT ANO, PRODUTO, QUANTIDADE
FROM VENDAS
)
PIVOT
(
SUM(QUANTIDADE)
FOR PRODUTO IN ('Laptop', 'Celular')
);
ANO 'Laptop' 'Celular'
---- -------- ---------
2019 120 200
2020 150 210
2021 180 230
Exemplo 2: Média de Notas por Aluno
Agora, suponha que temos uma tabela chamada NOTAS
que contém notas de alunos para diferentes matérias. A tabela possui três colunas: ALUNO
, MATERIA
e NOTA
.
SELECT * FROM NOTAS;
ALUNO MATERIA NOTA
------ ------- ----
João Matemática 8
João Português 9
Maria Matemática 9
Maria Português 8
Pedro Matemática 7
Pedro Português 8
Neste caso, queremos pivô a tabela para mostrar a média das notas por matéria para cada aluno. Aqui está a consulta PIVOT para isso:
SELECT * FROM
(
SELECT ALUNO, MATERIA, NOTA
FROM NOTAS
)
PIVOT
(
AVG(NOTA)
FOR MATERIA IN ('Matemática', 'Português')
);
ALUNO 'Matemática' 'Português'
------ ------------ ----------
João 8 9
Maria 9 8
Pedro 7 8
Esses são apenas dois exemplos de como as consultas PIVOT podem ser usadas no Oracle 12c. As possibilidades são infinitas, e a flexibilidade do PIVOT é uma ferramenta poderosa para a manipulação e análise de dados.