segunda-feira, 2 de maio de 2011

MCC: Microsoft Community Contributor




No último dia 27/04 recebi um email da Microsoft referente a este novo programa reconhecendo a algumas pessoas que contribuem em seus fóruns ajudando a resolver dúvidas e problemas de usuários dos seus produtos, além de propor melhorias.

Muita gente não sabe que existe uma equipe responsavel por manter os foruns do TechNet e MSDN com bons niveis de respostas e gerenciado.

Recentemente a Microsoft passou a reconhecer as pessoas que mais colaboram com o Forum. Este reconhecimento chama-se Microsoft Community Contributor Award e é um titulo que passa a valer para o Brasil tambem.




Aproveito para incentivar a todos a participarem dos fóruns e tb serem reconhecidos.

segunda-feira, 11 de abril de 2011

PIVOT

Olá a todos,

Depois de um longo e tenebroso inverno, voltei a atualizar o blog. E nessa reestreia achei interessante citar sobre um tema bem interessante.

PIVOT TABLE !!!

Participando de alguns fóruns e discussões verifiquei que muitas pessoas, inclusive eu mesmo, tinha dúvidas sobre o tema.

Vamos começar de forma conceitual. O que é PIVOT TABLE?

De forma simples e rápida o pivot é uma forma que o SQL Server disponibiliza para transformarmos linhas em colunas nas nossas consultas.

Muito usado para quem trabalha com BI, é um recurso que possibilita fazer uma visualização em colunas das linhas do resultado da consulta facilitando a analise das informações.

Segue um exemplo:

Create table #Exemplo (codigo int, nome varchar(10))


insert into #Exemplo (codigo, nome) Values (1,'jose')
insert into #Exemplo (codigo, nome) Values (2,'mario')
insert into #Exemplo (codigo, nome) Values (1,'jose')
insert into #Exemplo (codigo, nome) Values (2,'mario')
insert into #Exemplo (codigo, nome) Values (3,'celso')
insert into #Exemplo (codigo, nome) Values (4,'andre')


Select [jose],[mario],[celso],[andre] from #exemplo
Pivot (count(codigo) for nome in ([jose],[mario],[celso],[andre])) p

O resultado trará:

Jose = 2
Mario = 2
Celso = 1
Andre = 1

Que é a quantidade de cada nome na tabela.

Observações:

- Se usado em versões do SQL 2005 ou superior, o nivel de compatibilidade deverá ser no minimo o 90.
- Valores nulos não são computados.

Para SQL 2000 a sintaxe já muda, segue um exemplo:

create table venda (ano int, mes int, valor numeric(9,2))


insert venda values (2003, 2, 10)
insert venda values (2003, 2, 1)
insert venda values (2003, 3, 20)
insert venda values (2003, 4, 30)
insert venda values (2004, 1, 40)
insert venda values (2004, 2, 50)
insert venda values (2004, 3, 60)
insert venda values (2004, 4, 70)
insert venda values (2005, 1, 80)


select * from venda order by 1,2,3


Para fazer um Pivot Table na versão 2000 é necessário você utilizar função de grupo e a cláusula group by.

select ano
, mes_1 = sum(case when mes=1 then valor end)
, mes_2 = sum(case when mes=2 then valor end)
, mes_3 = sum(case when mes=3 then valor end)
, mes_4 = sum(case when mes=4 then valor end)

from tb_venda
group by ano
order by ano;


Então é isso...

Até o próximo post.

Abraço.