Consulta SQL sem duplicar valores

Delphi

13/08/2009

Olá tenho 3 tabelas, Produtos, Itens_Vendas e Vendas, fiz a consulta, exemplo:

´select * from Produtos, Itens_Vendas, Vendas where Produtos.Codigo = Itens_Vendas.Cod_produto and Vendas.Codigo = Itens_Vendas.Cod_Venda and Vendas.Data = 13/08/09´

No dbgrid tenho 4 fields: Produto, QDE, Valor, Total

Ele me retorna os produtos vendidos no dia 13/08/09, só que se ele foi vendido 5 vezes vai ser mostrado 5 vezes.

Aí segue minha dúvida, como faço para agrupar, mostrar o nome do produto somente 1 vez, mas a quantidade real vendida, sendo a soma das QDE do mesmo produto e também o Total sendo o resultado das QDE vezes o Valor.


Cizo2000

Cizo2000

Curtidas 0

Respostas

Facc

Facc

13/08/2009

use o group by <nome_do_campo_que_deseja_agrupar>


GOSTEI 0
Cizo2000

Cizo2000

13/08/2009

use o group by <nome_do_campo_que_deseja_agrupar>


Olá Facc, obrigado, mas vc poderia me exemplificar, pois sou meio novato em SQL.


GOSTEI 0
Cizo2000

Cizo2000

13/08/2009

use o group by <nome_do_campo_que_deseja_agrupar>


Olá Facc, obrigado, mas vc poderia me exemplificar, pois sou meio novato em SQL.


GOSTEI 0
Cizo2000

Cizo2000

13/08/2009

use o group by <nome_do_campo_que_deseja_agrupar>


Olá Facc, obrigado, mas vc poderia me exemplificar, pois sou meio novato em SQL.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

13/08/2009

não faz sentido manter a coluna valor. faz mais sentido manter a coluna da média calculada para o valor.
select
  IV.Cod_produto, P.Descricao,
  Sum(IV.QTDE) Qtde, Sum(IV.ValorUnit) Valor,
  Sum(IV.QTDE*IV.ValorUnit) Total,
  Cast(Sum(IV.QTDE*IV.ValorUnit)/Sum(IV.QTDE) as Numeric(10,4)) Media
from
  Itens_Vendas IV
inner join
  Vendas V on (V.Codigo = IV.Cod_Venda and V.Data = ´13/08/09´)
left join
  Produtos P on (P.Codigo = IV.Cod_produto)
group by
  IV.Cod_produto, P.Descricao

quando se tratar deste tipo de problema, publique a estrutura das tabelas envolvidas, pois não conhecemos os campos que serão necessários para a consulta.


GOSTEI 0
POSTAR