Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Consulta Sql com distinct


Vivendo&Aprendendo

Pergunta

Galera é o seguinte:

Tenho uma tabela de contas a receber e nesta tenho inumeros registros, e vários do mesmo cliente, tipo:

Tabale Contas a Receber

Codigo Cliente          DataVencimento    Valor
1          Alexandre     01/07/2008             10,00
2          Alexandre     01/08/2008             13,00
3          Alexandre     01/09/2008             23,00
4          Alexandre     01/10/2008           190,00
No meu form de contas a receber aparece desta maneira, até ai tudo certo está funcionando certinho, recebendo e tudo mais. O que eu quero é saber como eu faço para que apareça todos os valores que cada cliente está devendo em apenas uma linha, tipo:
Cliente         Valor
Alexandre     236,00

Eu sei que o Distinct faz essa união mas somente com registros totalmente iguais.

Como eu posso fazer isso?

Abraços

Alexandre

Editado por Vivendo&Aprendendo
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Cara, você já tentou agrupar (Group By)

Assim:

With Query do
begin
Close;
Sql.Clear;
Sql.Add('Select CR.codigoCliente, C.Cliente, Sum(CR.Valor)As Total From Contas_Receber CR Left Join Cliente C');
Sql.Add('On CR.CodigoCliente = C.Codigocliente');
Sql.Add('Group by CR.codigoCliente, C.Cliente ');
open;
end;

ver se isso te ajuda?

Link para o comentário
Compartilhar em outros sites

  • 0

Pirambu, não serviu ou eu não soube como adicionar na minha necessidade, mas o meu caso é o seguinte: tenho todos esses dados que informeiu em apenas uma tabela ContasReceber e não em duas como eu percebi na sql que você me enviou (ContasReceber e Clientes).

Poderia me explicar melhor?

Alexandre

Link para o comentário
Compartilhar em outros sites

  • 0
Pirambu, não serviu ou eu não soube como adicionar na minha necessidade, mas o meu caso é o seguinte: tenho todos esses dados que informeiu em apenas uma tabela ContasReceber e não em duas como eu percebi na sql que você me enviou (ContasReceber e Clientes).

Oi, 'Alexandre' !

Primeiro. Se suas tabelas não estão estruturadas como no exemplo do post anterior, então é melhor você estudar mais sobre normalização de banco de dados.

Segundo. Vamos orientar para que a resposta dada no post anterior possa ser utilizada em sua tabela desnormalizada.

Select Cliente, Sum(Valor)As Total From Contas_Receber Group by Cliente;

Link para o comentário
Compartilhar em outros sites

  • 0

Cara mostra os campos da tabela que contém os valores que você quer somar por cliente, porque se na tabela não estar ligada com a tabela de Cliente e existe apenas o codigo do cliente ficaria assim:

Adiciona um TQuery e na propriedade em SQL o codigo abaixo:

With Query do
begin
Close;
Sql.Clear;
Sql.Add('Select codigoCliente, Sum(Valor)As Total From Contas_Receber');
Sql.Add('Group by CodigoCliente ');
open;
end;

Link para o comentário
Compartilhar em outros sites

  • 0

Olá pessoal, deculpe-me pelo banco desnormalizado irei estudar sobre isso.

Mas seguindo as dicas de vocês olha o que acontece, se eu usar os códigos como abaixo:

Select Cliente, Sum(ValorRestante)As Total From ContasReceber 
Group by Cliente
Desta forma da o seguinte erro:
ADOContasReceber: Field 'Codigo' not found.
Então pensei em adicionar todos campos da tabela na consulta, ai deu este erro:
Você tentou executar uma consulta que não inclui a expressão 'Codigo' especificada como parte de uma função agregada.

Qual a dica de vocês para eu poder corrigir isto.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Olá pessoal, deculpe-me pelo banco desnormalizado irei estudar sobre isso.

Mas seguindo as dicas de vocês olha o que acontece, se eu usar os códigos como abaixo:

Select Cliente, Sum(ValorRestante)As Total From ContasReceber 
Group by Cliente
Desta forma da o seguinte erro:
ADOContasReceber: Field 'Codigo' not found.
Então pensei em adicionar todos campos da tabela na consulta, ai deu este erro:
Você tentou executar uma consulta que não inclui a expressão 'Codigo' especificada como parte de uma função agregada.

Qual a dica de vocês para eu poder corrigir isto.

Abraços

Oi Alexandre!

Não estou vendo o atributo Codigo no select que você exibiu acima. Tem certeza que passou o sql correto?

Link para o comentário
Compartilhar em outros sites

  • 0
Sim Denis... quando eu coloco o campo Codigo da o segundo erro que te passei...

Este campo Codigo é primary key e/ou é unico na tabela ContasReceber? Se for, não pode entrar na função de agregação com group by. e colocar o campo Codigo na cláusula group by descaracterizará a instrução passada. O único código que poderia entrar ali seria o código identificador do cliente, se a tabela fosse normalizada.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...