[firebase-br] RES: Ajuda com select

Alysson Azevedo agalysson em gmail.com
Qua Abr 7 16:15:35 -03 2010


Obrigado Ivan, no MS SQL 2005, usa-se o operador PIVOT para transformar a
linha em coluna...
mas procurei isso para o Firebird e num encontrei nada não...

imagino que a unica forma de fazer isso é via programação mesmo...
buscando primeiro os dias q serão as colunas, e entao montar uma nova query
com essas colunas...

se alguem aew souber algo sobre esse tal pivot, eu agradeço por quaisquer
informações...
----------------------------------------------

Alysson Gonçalves de Azevedo
(11) 8491-7730

(\(''^_^ )/)


Em 7 de abril de 2010 16:04, Ivan Guimarães Meirelles <igmeirelles em gmail.com
> escreveu:

> Olá Alysson...
>
> veja essa matéria:
> http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!178.entry<http://gustavomaiaaguiar.spaces.live.com/blog/cns%21F4F5C630410B9865%21178.entry>
>
> é sobre SQL Server... mas vc pode tirar uma idéia e converter para
> Firebird.
>
> Espero ter ajudado.
> Um abraço...
>
> Em 07/04/2010 14:40, Alysson Azevedo escreveu:
>
>  Mas Daniel, esses D01, D02 .. não são fixos, eles são as datas existentes
>> no
>> banco...
>> por exemplo, se um mes tiver movimento apenas nos dias 01, 05, 30, ele
>> quer
>> as colunas "01","05","30"...
>> e se no outro mes tiver nos dias 04,15,28, vem as colunas
>> "04","15","28"...
>>
>> essas colunas devem ser "dinaminacas", de acordo com o mes fechado...
>> ----------------------------------------------
>>
>> Alysson Gonçalves de Azevedo
>> (11) 8491-7730
>>
>> (\(''^_^ )/)
>>
>>
>> Em 7 de abril de 2010 15:28, Daniel (Vipa)<daniel em vipa.com.br>  escreveu:
>>
>>
>>
>>> Olá Thiago!
>>>
>>> Veja se isso pode te ajudar...
>>>
>>> Select a.filial,
>>>  (select sum(b.qtde)
>>>      from suatabela b
>>>      where b.data=:pdata and a.filial = b.filial) D01,
>>>  (select sum(b.qtde)
>>>      from suatabela b
>>>      where b.data=:pdata + 1 and a.filial = b.filial) D02,
>>>  (select sum(b.qtde)
>>>      from suatabela b
>>>      where b.data=:pdata + 2 and a.filial = b.filial) D03, ......
>>> from suatabela  a
>>>
>>>
>>> .... preencha com o período desejado ( :pdata + 3 .... :pdata + 4)
>>>
>>>
>>> ou então é só criar uma procedure selecionável onde você escolhe o
>>> mês/ano
>>> que deseja imprimir e ela te retorna dos dias devidamente totalizado por
>>> filial.
>>>
>>> Espero ter ajudado.
>>>
>>> Abraços,
>>>
>>> Daniel
>>>
>>> -----Mensagem original-----
>>> De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
>>> Em
>>> nome de Thiago
>>> Enviada em: quarta-feira, 7 de abril de 2010 13:57
>>> Para: lista em firebase.com.br
>>> Assunto: [firebase-br] Ajuda com select
>>>
>>> Galera, boa tarde.
>>>
>>> Tenho uma tabela na seguinte estrutura.
>>>
>>> filial qtde data
>>> 01     1    01/04/2010
>>> 01     3    01/04/2010
>>> 01     3    02/04/2010
>>> 01     8    03/04/2010
>>> 01     5    05/04/2010
>>> 02     3    01/04/2010
>>> 02     4    04/04/2010
>>> 03     1    02/04/2010
>>>
>>> Com esses dados gostaria de ter um select que me retornasse o resultado
>>> de vendas agrupadas por dia, até ai tudo tranquilo mas gostaria de
>>> trazer cada dia em uma coluna do select, da seguinte forma.
>>>
>>> FL D01 D02 D03 D04 D05
>>> 01 004 003 008 000 005
>>> 02 003 000 000 004 000
>>> 03 000 001 000 000 000
>>>
>>> Será que exite alguma forma de fazer essa quebra, mesmo que seja por
>>> função, o período utilizado vai sempre ser um mês fechado.
>>>
>>> Aproveitando o gancho, eu poderia fazer isso com uma função mas ficaria
>>> algo muito complicado, pois faria da seguinte forma.
>>>
>>> Criaria um tipo para o retorno e traria os dados agrupados por data +
>>> filial e depois eu não saberia como setar o dia na variavel, existe
>>> alguma forma de fazer no psql como se faz por exemplo em delphi setar um
>>> nome do campo por uma string?
>>>
>>> Obrigado.
>>>
>>>
>>> ______________________________________________
>>> 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
>>
>>
>>
>
> ______________________________________________
> 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