Uma duvida que vejo bastante em foruns e nos emails com duvidas que recebo sobre SSRS (SQL Server Reporting
Services) é em relação a agrupamento, ok, porem, o que é agrupamento…?
Sabe quando uma linha se repete varias vezes, sendo o topo maximo de uma hierarquia, e as diferencas da linha estão em niveis mais baixo, como por exemplo: Estado e cidade, teriamos algo assim…
SP São Paulo
SP Campinas
SP …
RJ …
RJ …
Ou seja, podemos observar que o estado esta aparecendo varias vezes!, o que obviamente fica bem feio, e ruim de ser lido em um relatorio, portanto, a tecnica de agrupamento não só é extremamente pratica e simples de ser aplicada, como em muito casos, simbolo de boa pratica e higienização visual em seu relatorio.
Como curiosidade, ao criarmos um grupo, estamos falando de hierarquia, a mesma que pode ser feita no SSAS (Que sera assunto de posts futuros…).
Abaixo, segue uma breve explicação de como se criar estes grupos (Hierarquias no SQL Server Reporting Services).
OBS: Estou utilizando BIDS 2008, com SQL Server 2008, e uma base chamada AdventureWorksLT, é basicamente a base AdventureWorks que ja conhecemos bem, porem em sua versão Lite, sendo mais leve, e com menos tabelas.
A tabela que utilizarei como exemplo, se chama Product, que contem informações dos produtos que são vendidos na famosa loja de bicicletas.
Passo 1: Criar a conexão com a base de dados e um novo relatorio
Neste passo, não tem segredo, se iniciarmos o BIDS no modo de contrutor de relatorio, muito provavelmente ja ira te saltar uma opção Wizard para informar uma conexão e um relatorio, como o foco deste post não é o desenvolvimento inicial de relatorios, irei abstrair este passo, qualquer duvida no mesmo, fique a vontade para me mandar email ou perguntar nos comentarios.
Passo 2: O Objeto
O objeto que utilizaremos para se criar os grupos se chama Tablix, basta arrastar da caixa de ferramenta, um deste objeto para seu relatorio.
Passo 3: Criação de um DataSet com o SELECT no banco de dados
Aqui, basta criar um novo DataSet, utilizando a conexão previamente criada, e escrever seu SELECT, no meu exemplo, estou utilizando:
SELECT ProductCategoryID, Name
FROM SalesLT.Product
WHERE ProductCategoryID IN (9, 10)
O filtro, é apenas para ficar visualmente mais limpo, tendo em vista que o ponto do post não é a analise de dados, e sim o agrupamento dos mesmos.
Feito isso, fica bem simples o agrupamento, abaixo de seu relatorio, deve ter os campos:
– Grupos de linhas
– Grupos de colunas
Como temos os dados no formato exemplificado acima, e queremos deixa-lo…
SP São Paulo
Campinas
RJ …
…
Iremos utilizar o agrupamento de linhas.
Então, basta voce selecionar o campo mais alto de sua hierarquia, que no nosso caso é o ProductCategoryId, e arrasta-lo para o grupo de linhas, e em seguida, ir descendo o nivel de sua hierarquia, portanto, arrastando tambem, o campo Name, como na imagem abaixo:

Com o intuito de melhor visualização e como não temos nenhum outro dados, estou setando a ultima coluna com visibilidade oculta, aqui, seria interessante colocar por exemplo, o total, um grafico por linha e afins, as possibilidades são infinitas.
Então, teriamos uma visualisação mais ou menos assim:
