[firebase-br] RES: Select com Pivot

Igor Almeida igor.carneiro.almeida em gmail.com
Qui Fev 2 12:03:05 -03 2012


Rafael, existe a forma de se fazer um PIVOT dinamico, o que necessita é
gerar uma regra para esses titulos do usuario.
Eu mesmo já tive esta necessidade e o que eu fiz foi que para os titulos o
usuario coloque como numero, 01, 02, 03...
Neste site tem uma dica de PIVOT dinamico
http://heliocarrilho.wordpress.com/2010/03/06/pivot-dinamico-%E2%80%93-t-sql-avancado/

Em 1 de fevereiro de 2012 15:20, Rafael Voltani <
rafael.volts em turbocode.com.br> escreveu:

> Boa tarde Flavio
>
> Muito obrigado pela dica, ficou perfeito,
> pelo menos em um dos relatórios, que os campos são fixos...
>
> Agora vou tentar fazer no outro, que o titulo varia conforme as opções
> do usuário,
> assim elimino vaaarias linhas de código... :D
>
> []s
>
> Rafael Voltani
> Firebird 2.5
> Delphi 2010
>
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br
> [mailto:lista-bounces em firebase.com.br] Em nome de Flavio Divino
> Enviada em: terça-feira, 31 de janeiro de 2012 20:07
> Para: FireBase
> Assunto: Re: [firebase-br] Select com Pivot
>
> Bom, quando eu preciso imitar o "pivot" eu faço a consulta da seguinte
> da seguinte maneira, conforme o exemplo abaixo, que pode ser usado com
> count ou com o sum, mas nem sempre a dica pode funcionar, vai depender
> de cada situação.
> Atenciosamente,
>
>
> Flávio Divino.
> ----------------------------------------------------------------------
> ----
> select
>  os.osinfo_uf_nota,
>  count(case when extract(day from os.osdata_atendimento) = 1 then
> os.osnumr_os END) AS "DIA 1",  count(case when extract(day from
> os.osdata_atendimento) = 2 then os.osnumr_os END) AS "DIA 2",
> count(case when extract(day from os.osdata_atendimento) = 3 then
> os.osnumr_os END) AS "DIA 3",  count(case when extract(day from
> os.osdata_atendimento) = 4 then os.osnumr_os END) AS "DIA 4",
> count(case when extract(day from os.osdata_atendimento) = 5 then
> os.osnumr_os END) AS "DIA 5",  count(case when extract(day from
> os.osdata_atendimento) = 6 then os.osnumr_os END) AS "DIA 6",
> count(case when extract(day from os.osdata_atendimento) = 7 then
> os.osnumr_os END) AS "DIA 7",  count(case when extract(day from
> os.osdata_atendimento) = 8 then os.osnumr_os END) AS "DIA 8",
> count(case when extract(day from os.osdata_atendimento) = 9 then
> os.osnumr_os END) AS "DIA 9",  count(case when extract(day from
> os.osdata_atendimento) = 10 then os.osnumr_os END) AS "DIA 10",
> count(case when extract(day from os.osdata_atendimento) = 11 then
> os.osnumr_os END) AS "DIA 11",  count(case when extract(day from
> os.osdata_atendimento) = 12 then os.osnumr_os END) AS "DIA 12",
> count(case when extract(day from os.osdata_atendimento) = 13 then
> os.osnumr_os END) AS "DIA 13",  count(case when extract(day from
> os.osdata_atendimento) = 14 then os.osnumr_os END) AS "DIA 14",
> count(case when extract(day from os.osdata_atendimento) = 15 then
> os.osnumr_os END) AS "DIA 15",  count(case when extract(day from
> os.osdata_atendimento) = 16 then os.osnumr_os END) AS "DIA 16",
> count(case when extract(day from os.osdata_atendimento) = 17 then
> os.osnumr_os END) AS "DIA 17",  count(case when extract(day from
> os.osdata_atendimento) = 18 then os.osnumr_os END) AS "DIA 18",
> count(case when extract(day from os.osdata_atendimento) = 19 then
> os.osnumr_os END) AS "DIA 19",  count(case when extract(day from
> os.osdata_atendimento) = 20 then os.osnumr_os END) AS "DIA 20",
> count(case when extract(day from os.osdata_atendimento) = 21 then
> os.osnumr_os END) AS "DIA 21",  count(case when extract(day from
> os.osdata_atendimento) = 22 then os.osnumr_os END) AS "DIA 22",
> count(case when extract(day from os.osdata_atendimento) = 23 then
> os.osnumr_os END) AS "DIA 23",  count(case when extract(day from
> os.osdata_atendimento) = 24 then os.osnumr_os END) AS "DIA 24",
> count(case when extract(day from os.osdata_atendimento) = 25 then
> os.osnumr_os END) AS "DIA 25",  count(case when extract(day from
> os.osdata_atendimento) = 26 then os.osnumr_os END) AS "DIA 26",
> count(case when extract(day from os.osdata_atendimento) = 27 then
> os.osnumr_os END) AS "DIA 27",  count(case when extract(day from
> os.osdata_atendimento) = 28 then os.osnumr_os END) AS "DIA 28",
> count(case when extract(day from os.osdata_atendimento) = 29 then
> os.osnumr_os END) AS "DIA 29",  count(case when extract(day from
> os.osdata_atendimento) = 30 then os.osnumr_os END) AS "DIA 30",
> count(case when extract(day from os.osdata_atendimento) = 31 then
> os.osnumr_os END) AS "DIA 31"
> from os
> where
>  (os.osdata_atendimento between '01/01/2010' and '01/31/2010') group
> by os.osinfo_uf_nota
>
> 2012/1/31 Felix - SOL Informática <felix em soltecnologia.com.br>:
> > Ola a todos!
> >
> > Pesquisando um pouco mais, encontrei
> > http://tracker.firebirdsql.org/browse/CORE-1738
> >
> > No final do post o Adriano dos Santos fala sobre procedures que
> > poderiam criar algo similar.
> >
> > Alguem tem exemplos?
> >
> > Fco. Felix
> > www.soltecnologia.com.br
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 

Atenciosamente,

Igor Almeida
# 85.87767028
# 85.99825525



Mais detalhes sobre a lista de discussão lista