Consulta SQL ( count )
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
Curtidas 0
Respostas
Fábio Cruz
26/03/2010
Bom dia
Tente algo assim:
Tente algo assim:
Select Codigo, Max(Nome), count(Abertos) from PedidosAbertos
where Codigo = :Codigo
Group By Codigo
GOSTEI 0
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
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
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
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
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
26/03/2010
Boa Tarde
Wilson
Funcionou redondinho.
vlw
Obrigado
GOSTEI 0
Wilson Junior
26/03/2010
De nada.
Precisar é só postar, sempre estamos dispostos a ajudar a todos colegas.
Precisar é só postar, sempre estamos dispostos a ajudar a todos colegas.
GOSTEI 0
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...
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