AGRUPAR SQL

SNNIFFER 09/05/2011 22:08:12
#373549
Duvida, como agrupar produtos vendidos no dia, pelo cod do produto ou descricao.

[txt-color=#e80000]Set prs = New ADODB.Recordset
prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS quantidadeprod, valuniprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod[Ô], gConexao, adOpenKeyset, adLockOptimistic


ListaProdutos.ListItems.Clear
If prs.RecordCount = 0 Then
ListaProdutos.Enabled = False
Exit Sub
Else
ListaProdutos.Enabled = True
End If

While Not prs.EOF
Set lst = ListaProdutos.ListItems.Add(, , prs(0))

For i = 1 To 3
lst.SubItems(i) = prs(i)
Next i
prs.MoveNext
Wend[/txt-color]


Usando este código, é listado todos os produtos na tabela e é feito um calculo estranho, que não consegui entender.
ROBIU 10/05/2011 07:52:22
#373558
Resposta escolhida
Você precisa incluir os campos que não foram incluidos na função agregada SUM() no BROUP BY. Veja se esse campo valuniprod é realmente necessário pois se o mesmo produto tiver valor diferente, não vai agrupar, a não ser que você mande um Max() ou Avg() (Média) nele.
Set prs = New ADODB.Recordset
prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS quantidadeprod, valuniprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod, prod, valuniprod[Ô], gConexao, adOpenKeyset, adLockOptimistic


SNNIFFER 11/05/2011 21:33:51
#373724
[th][/th]
Set prs = New ADODB.Recordset
prs.Open [Ô]SELECT venda, tipo,codprod,prod, SUM(QUANTIDADEprod) AS quantidadeprod, valuniprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod,quantidadeprod,valuniprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod[Ô], gConexao, adOpenKeyset, adLockOptimistic



usei este código, baseado no exemplo do ROBIU, está somando apenas as quantidades, mas, não os valores totais.
ROBIU 11/05/2011 21:50:08
#373727
Seu select não está igual ao que passei. Verifique. Os campos valuniprod e quantidadeprod vai trazer resultados inesperados.

Cole isso no seu código:

prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS quantidadeprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod, prod[Ô], gConexao, adOpenKeyset, adLockOptimistic

SNNIFFER 12/05/2011 22:57:53
#373829
ROBIU, Coloquei o código e beleza está somando as quantidades perfeitamente bem, mas, em relação aos valores totais dos produtos está aparecendo 0 , não identifiquei o problema, observando tambem que a palavra [ô][txt-color=#0000f0]valorprod[/txt-color][ô] é um campo da tabela, por isso acho que está havendo algum problema.



[th]

Set prs = New ADODB.Recordset
prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS quantidadeprod, SUM(valuniprod * QUANTIDADEprod) AS valorprod From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod, prod[Ô], gConexao, adOpenKeyset, adLockOptimistic

ListaProdutos.ListItems.Clear
If prs.RecordCount = 0 Then
ListaProdutos.Enabled = False
Exit Sub
Else
ListaProdutos.Enabled = True
End If

While Not prs.EOF
Set lst = ListaProdutos.ListItems.Add(, , prs(0))
For i = 1 To 3
lst.SubItems(i) = prs(i)
Next i
prs.MoveNext
Wend


[/th]]


Este é o código, para preenchimento da Listview.
LLAIA 13/05/2011 09:02:34
#373849
Então troque os alias de valorprod pra valortotalItem e QUANTIDADEprod por QUANTIDADEtotalitem por exemplo.

prs.Open [Ô]SELECT codprod, prod, SUM(QUANTIDADEprod) AS [txt-color=#e80000]quantidadetotalItem[/txt-color], SUM(valuniprod * QUANTIDADEprod) AS [txt-color=#e80000]valortotalItem[/txt-color] From vendafantasma Where [ô][Ô] & txtData.Text & [Ô][ô] GROUP BY codprod, prod[Ô], gConexao, adOpenKeyset, adLockOptimistic


agora, VENDAFANTASMA???
SNNIFFER 13/05/2011 19:28:29
#373903
Aê LLaia, teu exemplo está funcionando da mesma forma do exemplo do ROBIU, somando as quantidades, mas, os valores totais estão 0.
LLAIA 14/05/2011 20:32:15
#373953
tem certeza que esse campo
valuniprod
tem algum valor diferente de zero?? não é possível!!!

SNNIFFER 14/05/2011 20:57:35
#373954
Meu caro já tinha descoberto o problema, mas, não tive tempo de postar, bom, o problema era que o total, resultado do calculo da quantidade com o valor unitário, estava sem numeros decimais, com isso a multiplicação da quantidade por um preço em cantavos 0,90, resultava em 0.
Tópico encerrado , respostas não são mais permitidas