[firebase-br] Group By

Renan Rogowski Pozzo renanrpozzo em gmail.com
Qui Ago 22 14:42:53 -03 2013


Olá Marcelo,
tente com uma procedure.

Algo assim:

*create or alter procedure TESTE (*
*    CLIENTE integer)*
*returns (*
*    ID_ATEN integer,*
*    ID_ATENDIMENTO integer,*
*    ID_OCORRENCIA integer,*
*    DATA_HORA timestamp,*
*    DESCRICAO varchar(50),*
*    STATUS varchar(50),*
*    USUARIO varchar(50))*
*)*
*as*
*begin*
*for*
*  select a.id_atendimento*
*  from ATENDIMENTO a where a.id_cliente = :cliente*
*  into :id_aten*
*do*
*for*
*select first 1*
*    AO.ID_ATENDIMENTO,*
*    AO.ID_ATENDIMENTO_OCORRENCIA,*
*    AO.DATA_HORA,*
*    AA.DESCRICAO as ASSUNTO_DESCRICAO,*
*    AST.DESCRICAO as STATUS_DESCRICAO,*
*    U.NOME as USUARIO_NOME*
*from ATENDIMENTO_OCORRENCIA AO*
*inner join ATENDIMENTO A on (AO.ID_ATENDIMENTO = A.ID_ATENDIMENTO)*
*inner join ATENDIMENTO_ASSUNTO AA on (A.ID_ATENDIMENTO_ASSUNTO =*
*AA.ID_ATENDIMENTO_ASSUNTO)*
*inner join ATENDIMENTO_STATUS AST on (A.ID_ATENDIMENTO_STATUS =*
*AST.ID_ATENDIMENTO_STATUS)*
*inner join USUARIO U on (AO.ID_USUARIO = U.ID_USUARIO)*
*WHERE AO.id_atendimento = :id_aten*
*order by AO.data_hora desc*
*into :ID_ATENDIMENTO, :ID_OCORRENCIA, :DATA_HORA timestamp,*
*     :DESCRICAO varchar(50), :STATUS varchar(50), :USUARIO varchar(50))*
*do*
*suspend;*
*end*

Só tem que adaptar a suas tabelas e campos.
Veja se atende a sua necessidade.

Espero ter ajudado.
Abraço,
Renan


Em 22 de agosto de 2013 12:14, Marcelo Moreira <
marcelomoreira.souza em gmail.com> escreveu:

> Patricia,
> Neste me caso AO.ID_ATENDIMENTO_OCORRENCIA é único, não vai repetir.
> Por isso imaginei colocando um max nele, traria sempre o ultimo registro.
>
> Ainda nao consegui resolver e se alguem puder me dar uma força.
> Obrigado!!
>
>
> Em 20 de agosto de 2013 12:04, Patricia Aparecida Ayres <
> patricia.ayres em bol.com.br> escreveu:
>
> > Marcelo,
> >
> > Veja bem, para um max(AO.ID_ATENDIMENTO_OCORRENCIA) possivelmente deve
> > existir mais AO.DATA_HORA diferenete.
> > exemplo:
> > AO.ID_ATENDIMENTO_OCORRENCIA -  AO.DATA_HORA
> > 1 - 09/05/2005 17:28:21
> > 1 - 09/05/2005 18:00:55
> > 1 - 10/05/2005 14:30:17
> >
> > sugiro você incluir para o campo AO.DATA_HORA um max, min, etc para que
> > traga apenas um registro. Talvez, para os demais campos  você fazer o
> mesmo.
> >
> > Att.
> > Patrícia
> >
> >
> > Em 16/08/2013 12:51, Marcelo Moreira < marcelomoreira.souza em gmail.com >
> > escreveu:
> > Pessoal,
> > Alguem pode me ajudar a identificar onde esta o erro neste select.
> Firebird
> > 2.1
> >
> > select
> >  AO.ID_ATENDIMENTO,
> >  max(AO.ID_ATENDIMENTO_OCORRENCIA),
> >  AO.DATA_HORA,
> >  AA.DESCRICAO as ASSUNTO_DESCRICAO,
> >  AST.DESCRICAO as STATUS_DESCRICAO,
> >  U.NOME as USUARIO_NOME
> > from ATENDIMENTO_OCORRENCIA AO
> > inner join ATENDIMENTO A on (AO.ID_ATENDIMENTO = A.ID_ATENDIMENTO)
> > inner join ATENDIMENTO_ASSUNTO AA on (A.ID_ATENDIMENTO_ASSUNTO =
> > AA.ID_ATENDIMENTO_ASSUNTO)
> > inner join ATENDIMENTO_STATUS AST on (A.ID_ATENDIMENTO_STATUS =
> > AST.ID_ATENDIMENTO_STATUS)
> > inner join USUARIO U on (AO.ID_USUARIO = U.ID_USUARIO)
> > WHERE A.ID_CLIENTE = 1
> > group by AO.ID_ATENDIMENTO
> > order by AO.data_hora desc
> >
> > O que acontece é que para um registro na tabela ATENDIMENTO eu posso ter
> > varios registros relacionados na tabela ATENDIMENTO_OCORRENCIA.
> >
> > O que eu preciso fazer é agrupar pelo ID_ATENDIMENTO mas retornando
> sempre
> > o ultimo registro candastrado na tabela ATENDIMENTO_OCORRENCIA.
> >
> > Grato pela atenção.
> >
> > --
> > Marcelo Moreira
> > (31) 8420-2723
> > E-mail / MSN: marcelomoreira.souza em hotmail.com
> > E-mail: marcelomoreira.souza em gmail.com
> > Skype: marcelomoreira.souza
> > ______________________________________________
> > 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
> >
>
>
>
> --
> Marcelo Moreira
> (31) 8420-2723
> E-mail / MSN: marcelomoreira.souza em hotmail.com
> E-mail: marcelomoreira.souza em gmail.com
> Skype: marcelomoreira.souza
> ______________________________________________
> 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