Utilizando o select para formatar dados em relatórios – Parte 01
Resumo
Alguns relatórios gerados a partir de instruções SELECT permitem a apresentação dos dados para os usuários na forma de lista, onde os valores das colunas são colocados linha a linha. Em determinadas situações a quantidade dos dados precisa ser divida em colunas com o objetivo de facilitar a leitura do relatório. Este artigo apresenta uma maneira de dividir os dados entre as colunas apresentando-os alternadamente.
Duplicando os dados
Quando temos que apresentar informações na forma de lista, isto é, em linhas e colunas, geralmente utilizamos a instrução SELECT para retornar os dados completos da tabela. Podemos limitar a quantidade de dados retornados utilizando a cláusula WHERE com o objetivo de filtrar certas linhas para que possamos visualizar somente o que nos interessa. Temos ainda a cláusula ORDER BY da instrução SELECT que permite a ordenação dos resultados retornados pela instrução.
A maioria dos relatórios exige que, após o filtro e a ordenação dos dados, todas as linhas sejam dividias em colunas, com o objetivo de facilitar a leitura do relatório. Como exemplo, vamos trabalhar com a tabela chamada TB_SEPARA, que possui três colunas: uma coluna chamada ID, contendo uma numeração seqüencial sem falhas, uma coluna chamada NOME que representa um atributo texto comum de uma tabela e uma terceira coluna chamada DATA que também representa um atributo comum. A Tabela 1 mostra quatro linhas desta tabela.
ID |
NOME |
DATA |
1 |
A |
16/09/2005 |
2 |
B |
15/09/2005 |
3 |
C |
17/09/2005 |
4 |
D |
14/09/2005 |
Tabela 1. Quatro linhas da tabela TB_SEPARA.
Neste artigo utilizaremos instruções SELECT baseadas no dialeto T-SQL utilizado pelo SQL Server, mas com poucas alterações as instruções aqui apresentadas podem ser portadas para outros bancos de dados sem grandes dificuldades.
A primeira manipulação que iremos fazer nestes dados é duplicá-los fazendo com que o relatório possua seis colunas. Para isso utilizaremos um inner join que relacionará a tabela TB_SEPARA com ela mesma, utilizando um alias chamado A e outra alias chamado B, ambos apontando para a tabela TB_SEPARA.
O SQL Server permite colunas com nomes iguais em uma instrução SELECT, mas vamos modificar o nome das novas colunas para facilitar a manipulação delas por uma aplicação. A instrução apresentada na Listagem 1 faz a duplicação das colunas e dos dados:
Listagem 1. Instrução SELECT que duplica os dados e as colunas.
O resultado da execução da instrução apresentada na Listagem 1 pode ser visto na Tabela 2.
ID |
NOME |
DATA |
ID1 |
NOME1 |
DATA1 |
1 |
A |
16/09/2005 |
1 |
A |
16/09/2005 |
2 |
B |
15/09/2005 |
2 |
B |
15/09/2005 |
3 |
C |
17/09/2005 |
3 |
C |
17/09/2005 |
4 |
D |
14/09/2005 |
4 |
D |
14/09/2005 |
Tabela 2. Duplicação dos dados em novas colunas.