AGRUPAR E SOMAR NUMA MESMA SQL

WEBIER 01/10/2010 23:12:57
#354290
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]
JESUEL.OLIVEIRA 02/10/2010 00:04:36
#354292
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[Ô]
GUIMORAES 02/10/2010 10:11:33
#354300
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.
JIRAIAA 02/10/2010 11:18:06
#354304
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
WEBIER 02/10/2010 15:29:35
#354307
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...
WEBIER 02/10/2010 15:43:11
#354308
eu tentei:

[Ô]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
GUIMORAES 02/10/2010 17:36:12
#354311
Quando você usa a expressão sum, tu deves usar o group by.
vai tentando ai.

abraços.
WEBIER 02/10/2010 17:48:15
#354312
certo, mudei então para:
[Ô]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
MARCELO.TREZE 02/10/2010 18:29:45
#354314
Resposta escolhida
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[Ô]

JESUEL.OLIVEIRA 02/10/2010 19:04:18
#354316
Amigo use, criei um tabela e testei o resultado ficou OK.

  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.
WEBIER 02/10/2010 19:17:07
#354317
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
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas