[firebase-br] RES: Ajuda com select

Ivan Guimarães Meirelles igmeirelles em gmail.com
Qua Abr 7 16:38:32 -03 2010


Só pra completar...

pesquise sobre CUBO DE DADOS... existem ferramentas que fazem isso para 
Firebird, o IBExpert é uma delas, mas creio que a versão free não tenha 
esse recurso.

Um abraço.

Em 07/04/2010 15:15, Alysson Azevedo escreveu:
> 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
>>
>>      
> ______________________________________________
> 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