Fórum SQL - Group By #59073

08/11/2007

0

Pessoal,
Bom dia!

Em um banco Firebird 1.5 eu tenho a seguinte tabela com os respectivos
campos:

TB_TESTE

ID_TB_TESTE      INTEGER  PK
ID_OPERACAO    INTEGER
ID_USUARIO       INTEGER
STATUS              CHAR(1)


Com este SQL:
select ID_USUARIO, count(*)
from TB_TESTE
where ID_OPERACAO = 1
group by 1


Eu consigo a quantidade de lançamento para cada usuário:
ID_USUARIO     COUNT
1                      18
2                      19


O que eu estou precisando na verdade é retornar isso mais a quantidade de registros separados pelo campo STATUS que pode ter dois valores:

P – PENDENTE
R – RESOLVIDO

Então ficaria algo assim:
ID_USUARIO     COUNT     PENDENTE     RESOLVIDO
1                      18               10                      8
2                      19               12                      7



É possível fazer isto que estou precisando?
Desde já agradeço pela atenção.
Abraço a todos!


Mmoreira

Mmoreira

Responder

Posts

08/11/2007

Jáder Medeiros

Select a.ID_Usuario, b.Pendente+c.Resolvido Count, b.Pendente, c.Resolvido
From TB_TESTE a
 Left Join (Select ID_Usuario, Count(1) Pendente From TB_TESTE Where Status = ´P´ Group By ID_Usuario) b On a.ID_Usuario = b.ID_Usuario
 Left Join (Select ID_Usuario, Count(1) Resolvido From TB_TESTE Where Status = ´R´ Group By ID_Usuario) c On a.ID_Usuario = c.ID_Usuario
Where a.ID_Operacao = 1
Group By a.ID_Usuario, b.Pendente+c.Resolvido, b.Pendente, c.Resolvido



Responder

Gostei + 0

08/11/2007

Mmoreira

Jader,
Este sql nao esta funcionando pois estao aparecendo alguns erros.
Depois da uma conferida ai no codigo.

Valew


Responder

Gostei + 0

08/11/2007

Jáder Medeiros

Alguns erros? Que erros? Eu testei exatamente esse SQL na estrutura que você disse e funcionou. Me diga qual foi o erro apontado.


Responder

Gostei + 0

08/11/2007

Mmoreira

Jader,
A primeira coisa que nao esta passando é este Count que vc colocou logo depois de:
, b.Pendente+c.Resolvido Count


Retirando este Count ele ja da erro no primeiro subselect


Da uma olhada ai ... nao sei se pode ser isso mas a versao do Firebird que estou rodando é a 1.5


Responder

Gostei + 0

08/11/2007

Jáder Medeiros

Realmente, o alias [b:fe84ec1c33]Count[/b:fe84ec1c33] deveria ter sido retirado. Ele é uma palavra reservada no FireBird.

Quando ao SubSelect, não sei se esta versão de FireBird suporta. A versão que estou usando é [b:fe84ec1c33]2.0.1.12855[/b:fe84ec1c33].

Quando eu chegar em casa (19h), instalo esta versão que você possui e vou testar.


Responder

Gostei + 0

08/11/2007

Mmoreira

Jader,
Ao que parece a versao que estou usando nao suporta este subselect que voce usou ... vou ver se instalo esta versao para teste.

Obrigado pela atenção!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar