Transformando linhas em colunas com SQL (pivoteamento)

Publicado por edcley da silva firmino em 19/04/2017

[ Hits: 865 ]

 


Transformando linhas em colunas com SQL (pivoteamento)



Transformando linhas em colunas com utilizando SQL ansi, técnica chamada de pivoteamento.

Prezados, nesse pequeno texto irei explicar como transpor o conteúdo de linhas em colunas utilizando SQL ansi (deve funcionar em qualquer banco de dados relacional).

Imaginemos que você possua uma tabela com o seguintes campos e conteúdo:

Matricula  disciplina  bimestre  nota
101,       matematica, 1,        8.5
102,       matematica, 1,        9.5
102,       português,  2,        5.0
101,       matematica, 2,        9.0

Digamos que você queira mostrar o resultado da consulta das notas da disciplina de matemática da seguinte forma:

Matricula  Nota 1 bimestre   Nota 2 bimestre
 101           8.5.              9.0
 102.          9.5.              5.0

Vamos ao SQL:

Select matricula,
(Select nota from tabela where bimestre = 1 and disciplina = matematica and matricula = t1.matricula) as " Nota do 1 bimestre",

(Select nota from tabela where bimestre =2 and disciplina = matematica and matricula = t1.matricula) as " Nota do 2 bimestre"

From tabela t1 where disciplina = "matematica"

Perceba que amarramos a consulta interna com a matrícula da tabela externa que apelidamos de "t1".

Com isso, realizamos a consulta com SQL transportando o conteúdo das linhas em colunas.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

TARDIS96 OS - Uma distribuição Linux feita para iniciantes

DHCP para mais de uma rede

Incrementando a segurança com o Firestarter

Instalando driver wireless Broadcom BCM4312 no Fedora, RHEL e CentOS Linux

Projeto LINORG-USP: Baixe Linux no Estado de São Paulo

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts