Consulta SQL ( count )

Delphi

26/03/2010

Bom Dia     Não sou muito bom em SQL, estou precisando fazer uma consulta que me retornasse o total de pedidos em aberto de um cliente e mostrar num label.   estou usando Firebird - conexão com Zeos     Ex. ( cliente)  xxx  total de 13 pedidos Aberto   tabela cliente   Cod Cliente Status   // aberto - fechado - cancelado Data Tel email     obs . se alguem souber de um bom material SQL pode ser apostila ou livro ficaria muito grato            
Frost

Frost

Curtidas 0

Respostas

Fábio Cruz

Fábio Cruz

26/03/2010

Bom dia
Tente algo assim:
Select Codigo, Max(Nome), count(Abertos) from PedidosAbertos
where Codigo = :Codigo
Group By Codigo

GOSTEI 0
Wilson Junior

Wilson Junior

26/03/2010

SELECT
  Cliente,
  Email,
  COUNT(*) AS Qtde
FROM
  CLIENTE
WHERE
  Status = 'aberto'
GROUPY BY
  Cliente,
  Email


Espero ter colaborado.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

26/03/2010

ou ainda:

Select
  P.CodCliente,
  C.Nome,
  sum(case when P.Status='Aberto' then 1 else 0 end) Abertos,
  sum(case when P.Status='Fechado' then 1 else 0 end) Fechados,
  sum(case when P.Status='Cancelado' then 1 else 0 end) Cancelados
from Clientes C
left join Pedidos P on P.CodCliente = C.Codigo
[where C.Codigo = :Codigo]
Group By P.CodCliente, C.Nome

GOSTEI 0
Frost

Frost

26/03/2010

Boa Tarde   Obrigado ao pessoal que mandou as dicas que me foi de muita valia   Wilson   Quanto sua dica fiz o teste  dentro do banco e rodou  blz e mostrou o que eu queira, agora queira saber como faço no delphi para mostrar o resultado no label,  agora fiquei meio no escuro        
GOSTEI 0
Wilson Junior

Wilson Junior

26/03/2010

  Query1.Close;
  Query1.SQL.Text :=
    ' SELECT' +
    '   Cliente,' +
    '   Email,' +
    '   COUNT(*) AS Qtde' +
    ' FROM' +
    '   CLIENTE' +
    ' WHERE' +
    '   Status = ' + QuotedStr( 'aberto' ) +
    ' GROUPY BY' +
    '   Cliente,' +
    '   Email';
  Query1.Open;

  Label1.Caption := IntToStr( Query1.FieldByName('Qtde').AsInteger );


É um exemplo bem simples, mas acho que já lhe ajuda. Qualquer coisa post aí.

Espero ter colaborado.
GOSTEI 0
Frost

Frost

26/03/2010

Boa Tarde Wilson   Funcionou redondinho.   vlw Obrigado     
GOSTEI 0
Wilson Junior

Wilson Junior

26/03/2010

De nada.
Precisar é só postar, sempre estamos dispostos a ajudar a todos colegas.
GOSTEI 0
Andre Murilo

Andre Murilo

26/03/2010

Tenho um problema parecido

tenho uma tabela de vendas com ranking de vendas...
preciso fazer uma consulta (com edit) por vendedor que conte quantas vezes esse vendedor ficou em certa posição ex.:
nome posicao qtdade
andre 1 1
andre 2 4
andre 5 1
sandro 1 2 etc...
fiz o seguinte:
componentes:
edit
dbgrid

qryPosicao.Close;
qryPosicao.SQL.Text := select * from classificacao where nome= :nome;
qryPosicao.Parameters.ParamByName(nome).Value := edt1.Text;
qryPosicao.Open;

e na string da qry fiz..select nome,posicao, count(posicao) from vendas group by nome,posicao prder by nome

mas quando executo dáo seguinte erro...qryposicao field count ot found...
GOSTEI 0
POSTAR