[firebase-br] RES: Select com Pivot

Rafael Voltani rafael.volts em turbocode.com.br
Qua Fev 1 16:20:02 -03 2012


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





Mais detalhes sobre a lista de discussão lista