[firebase-br] Group By

Sandro Souza escovadordebits em gmail.com
Sex Ago 16 14:24:23 -03 2013


Bom dia/tarde/noite Marcelo.

Nobre amigo, acredito que você esqueceu de colocar, na cláusula GROUP 
BY, todas as expressões da cláusula SELECT que não estão usando funções 
de agregamento (MAX, MIN, SUM, AVG).

Ou seja, você colocou apenas:

GROUP BY AO.ID_ATENDIMENTO

Mas deveria colocar:

GROUP BY AO.ID_ATENDIMENTO, AO.DATA_HORA, AA.DESCRICAO, AST.DESCRICAO, 
U.NOME

Espero ter ajudado mais que atrapalhado. :D

Em 16-08-2013 12:51, Marcelo Moreira 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.
>





Mais detalhes sobre a lista de discussão lista