AGRUPAR E SOMAR NUMA MESMA SQL
Boa noite amigos, possuo essa SQL abaixo;
[Ô]SELECT COD_PRODUTO, DESCRICAO, QUANTIDADE, PRECO, (QUANTIDADE * PRECO) AS TOTAL FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMES.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô])[Ô]
ai aparece uma lista de produtos
[txt-color=#e80000]COD_PRODUTO | DESCRICAO | QUANTIDADE | PRECO | TOTAL |
01 Sabão x 01 1,50 1,50
01 Sabão x 01 1,50 1,50
25 Sal z 03 2,00 6,00
01 Sabão x 02 1,50 3,00[/txt-color]
Gostaria de agrupar POR PRODUTOS e somar os campos QUANTIDADE
ai essa mesma tabela acima ficaria assim:
[txt-color=#e80000]COD_PRODUTO | DESCRICAO | QUANTIDADE | PRECO | TOTAL |
01 Sabão x 04 1,50 6,00
25 Sal z 03 2,00 6,00[/txt-color]
ou seja, ele agrupou todos os produtos repetidos numa linha só e somou o campo quantidade [txt-color=#e80000](1+1+2=4)[/txt-color]
[Ô]SELECT COD_PRODUTO, DESCRICAO, QUANTIDADE, PRECO, (QUANTIDADE * PRECO) AS TOTAL FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMES.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô])[Ô]
ai aparece uma lista de produtos
[txt-color=#e80000]COD_PRODUTO | DESCRICAO | QUANTIDADE | PRECO | TOTAL |
01 Sabão x 01 1,50 1,50
01 Sabão x 01 1,50 1,50
25 Sal z 03 2,00 6,00
01 Sabão x 02 1,50 3,00[/txt-color]
Gostaria de agrupar POR PRODUTOS e somar os campos QUANTIDADE
ai essa mesma tabela acima ficaria assim:
[txt-color=#e80000]COD_PRODUTO | DESCRICAO | QUANTIDADE | PRECO | TOTAL |
01 Sabão x 04 1,50 6,00
25 Sal z 03 2,00 6,00[/txt-color]
ou seja, ele agrupou todos os produtos repetidos numa linha só e somou o campo quantidade [txt-color=#e80000](1+1+2=4)[/txt-color]
Amigo tente GROUP BY, já ia esquecendo colque SUM onde você precisa somar
[Ô]SELECT COD_PRODUTO, DESCRICAO, sum(QUANTIDADE) as qtd , PRECO, (QUANTIDADE * PRECO) AS TOTAL FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMES.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô]) group by COD_PRODUTO[Ô]
Citação:[Ô]SELECT COD_PRODUTO, DESCRICAO, sum(QUANTIDADE) as qtd , sum(PRECO) as Preco, (QUANTIDADE * PRECO) AS TOTAL FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMES.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô]) group by COD_PRODUTO, DESCRICAO[Ô]
Tenta Assim, pois da Maneira que o Jesual Passou pode dar diferença nos valores calculados.
Abraços.
O correto é
[Ô]SELECT COD_PRODUTO, DESCRICAO, SUM(QUANTIDADE) AS Quantidade, SUM(QUANTIDADE * PRECO) / SUM(QUANTIDADE) AS PRECO, SUM(QUANTIDADE * PRECO) AS Total FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMES.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô])[Ô]
Somente lembrando pelos topicos anterioes: você nao pode somar os preços e multiplicar pela quantidade tambem somada, pois da um valor diferente se voce tivesse multiplicado cada item e somado apenas o total:
Qtde. Preço Total
2 23 46
4 5 20
5 12 60
126
Soma Qtd. Soma Preco Total
11 40 440
Para o preço tem que achar o preço médio com base na soma de todo o seu produto.
SE A RESPOSTA ÚTIL ENTÃO SELECIONE-A E ENCERRE O TÓPICO
[Ô]SELECT COD_PRODUTO, DESCRICAO, SUM(QUANTIDADE) AS Quantidade, SUM(QUANTIDADE * PRECO) / SUM(QUANTIDADE) AS PRECO, SUM(QUANTIDADE * PRECO) AS Total FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMES.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô])[Ô]
Somente lembrando pelos topicos anterioes: você nao pode somar os preços e multiplicar pela quantidade tambem somada, pois da um valor diferente se voce tivesse multiplicado cada item e somado apenas o total:
Qtde. Preço Total
2 23 46
4 5 20
5 12 60
126
Soma Qtd. Soma Preco Total
11 40 440
Para o preço tem que achar o preço médio com base na soma de todo o seu produto.
SE A RESPOSTA ÚTIL ENTÃO SELECIONE-A E ENCERRE O TÓPICO
tentei todos os que me passaram e todos deram o mesmo erro:
Run-time erro [ô]3122[ô]
Você tentou executar uma consulta que não inclui a expressão [ô]DESCRICAO[ô]especificada como parte de uma função agregada
Verifiquei a tabela e tem todos esses campos que citei...
Run-time erro [ô]3122[ô]
Você tentou executar uma consulta que não inclui a expressão [ô]DESCRICAO[ô]especificada como parte de uma função agregada
Verifiquei a tabela e tem todos esses campos que citei...
eu tentei:
funcinou blz
ai tentei colocar somente um SUM
ai deu erro :
Run-time erro [ô]3122[ô]
Você tentou executar uma consulta que não inclui a expressão [ô]COD_PRODUTO[ô] especificada como parte de uma função agregada
[Ô]SELECT DISTINCT COD_PRODUTO, DESCRICAO, QUANTIDADE, PRECO, VALOR_DESC, (QUANTIDADE * PRECO) AS TOTAL FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMes.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô])[Ô]
funcinou blz
ai tentei colocar somente um SUM
[Ô]SELECT DISTINCT COD_PRODUTO, DESCRICAO, SUM(QUANTIDADE) AS var_qtda, PRECO, VALOR_DESC, (QUANTIDADE * PRECO) AS TOTAL FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMes.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô])[Ô]
ai deu erro :
Run-time erro [ô]3122[ô]
Você tentou executar uma consulta que não inclui a expressão [ô]COD_PRODUTO[ô] especificada como parte de uma função agregada
Quando você usa a expressão sum, tu deves usar o group by.
vai tentando ai.
abraços.
vai tentando ai.
abraços.
certo, mudei então para:
ai dar o seguinte erro ([txt-color=#e80000]agora mudou para o campo PRECO[/txt-color]):
Run-time erro [ô]3122[ô]
Você tentou executar uma consulta que não inclui a expressão [ô]PRECO[ô] especificada como parte de uma função agregada
[Ô]SELECT COD_PRODUTO, DESCRICAO, SUM(QUANTIDADE) AS var_qtda, PRECO, VALOR_DESC, TOTAL FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMes.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô]) group by COD_PRODUTO, DESCRICAO[Ô]
ai dar o seguinte erro ([txt-color=#e80000]agora mudou para o campo PRECO[/txt-color]):
Run-time erro [ô]3122[ô]
Você tentou executar uma consulta que não inclui a expressão [ô]PRECO[ô] especificada como parte de uma função agregada
tenta
[Ô]SELECT COD_PRODUTO, DESCRICAO, SUM(QUANTIDADE) AS var_qtda, PRECO, VALOR_DESC, TOTAL FROM PEDIDOS_ITENS WHERE Month(DATA) = [Ô] & cboMes.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô]) group by COD_PRODUTO, DESCRICAO,PRECO,VALOR_DESC,TOTAL[Ô]
Amigo use, criei um tabela e testei o resultado ficou OK.
simulei com seus dados e deu certo!
o segredo esta no sum(quantidade), você manda somar e agrupar o valor. De fato este conta pode dar errada pois se tratando de venda de produto este preços podem mudar, ai se você multiplicar vai dar errado, precisa calcular preço médio e ou somar a quantidade por valor e depois mostar o total.
SELECT COD_PRODUTO, DESCRICAO, sum(QUANTIDADE) as qtd, PRECO, (sum(QUANTIDADE) * PRECO) AS TOTAL FROM pedidos_itens group by cod_produto;
simulei com seus dados e deu certo!
o segredo esta no sum(quantidade), você manda somar e agrupar o valor. De fato este conta pode dar errada pois se tratando de venda de produto este preços podem mudar, ai se você multiplicar vai dar errado, precisa calcular preço médio e ou somar a quantidade por valor e depois mostar o total.
Fiz conforme o MARCELO-TREZE falou, parou de dar o erro, mas fica uma duvida no ar...
pelo que entendi ele vai agrupar primeiro por COD_PRODUTO, depois por DESCRICAO, depois por PRECO, VALOR_DESC e TOTAL
group by COD_PRODUTO, DESCRICAO,PRECO,VALOR_DESC,TOTAL[Ô]
Será se nao vai dar algum problema, pois queria somente agrupar os produtos que tivesse o mesmo COD_PRODUTO
pelo que entendi ele vai agrupar primeiro por COD_PRODUTO, depois por DESCRICAO, depois por PRECO, VALOR_DESC e TOTAL
group by COD_PRODUTO, DESCRICAO,PRECO,VALOR_DESC,TOTAL[Ô]
Será se nao vai dar algum problema, pois queria somente agrupar os produtos que tivesse o mesmo COD_PRODUTO
Tópico encerrado , respostas não são mais permitidas