Autor
Mensagem
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





País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
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
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





País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
#Código
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.





País: Brasil
Estado: RS
Cidade: Caxias do Sul
Mensagens: 1574
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...





