CONSULTA SQL AGRUPAR E SOMAR POR PERIODO

MASTER2020 02/11/2010 18:21:08
#356473
OLa pessoal, estou precisando da ajuda do forum, eu fiz uma sql pra agrupar itens mas nao esta funcionando

eu tenho estas estrutura de tabelas

tblbase
codbase e nomebase

tblconsumido
dataconsumo , produtoconsumido, qtdconsumo

no caso produtoconsumido tras o codigo do produto da codbase

eu relacionei os campos ambos numericos

RSProduto.Open [Ô]SELECT a.codbase, a.nomebase, sum(b.qtdconsumo) , [Ô] &_
[Ô]FROM tblbase a, tblconsumido b [Ô] & _
[Ô]WHERE a.codbase = b.produtoconsumido [Ô] & _
[Ô]AND b.dataconsumo [Ô] & _
[Ô]BETWEEN #[Ô] & Data1 & [Ô]# AND #[Ô] & Data2 & [Ô]# [Ô] & _
[Ô]GROUP BY a.codbase, a.nomebase[Ô], cnn, 3, 3

no caso a a consulta teria q pesquizar por data agrupar e somar o totais da cada item num periodo
agradeco desde ja a ajuda

LLAIA 03/11/2010 10:05:21
#356522
bom cara, to vendo uma vírgula bem na primeira linha que deve tá dando o problema:

RSProduto.Open [Ô]SELECT a.codbase, a.nomebase, sum(b.qtdconsumo) [txt-color=#e80000],[/txt-color] [Ô] &_

parece que vc tá usando ACCESS. nos critérios da cláusula BETWEEN Data1 e Data2 estão no formato americano mm/dd/yyyy ? Isso é importante.
ACG1574 03/11/2010 10:13:04
#356523
[ô]se for agrupor por data esta errado
[ô]ai vc ta agrupando por nomebase
[ô]esse exemplo que atualizei vai agrupor por dia, mas vc pode agrupar por mes, ano, semana, etc...

RSProduto.Open [Ô]SELECT a.codbase, a.nomebase, sum(b.qtdconsumo) soma_qtd [Ô] &_
[Ô]FROM tblbase a, tblconsumido b [Ô] & _
[Ô]WHERE a.codbase = b.produtoconsumido [Ô] & _
[Ô]AND b.dataconsumo [Ô] & _
[Ô]BETWEEN #[Ô] & Data1 & [Ô]# AND #[Ô] & Data2 & [Ô]# [Ô] & _
[Ô]GROUP BY a.codbase, a.nomebase,b.dataconsumo [Ô], cnn, 3, 3
MASTER2020 29/11/2010 19:08:13
#358438
pessoal desculpe a demora vou testar o codigo acg1574
MASTER2020 19/12/2010 15:31:38
#359912
O Acg descuple a demora mas esta dando erro direto no fonte qdo colei seu codigo ele ja ficou vermelho desculpe a demora
LUIZCOMINO 19/12/2010 22:44:14
#359938
Resposta escolhida
RSProduto.Open [Ô]SELECT a.codbase, a.nomebase, sum(b.qtdconsumo) soma_qtd [Ô] & _
[Ô]FROM tblbase a, tblconsumido b [Ô] & _
[Ô]WHERE a.codbase = b.produtoconsumido [Ô] & _
[Ô]AND b.dataconsumo [Ô] & _
[Ô]BETWEEN #[Ô] & Data1 & [Ô]# AND #[Ô] & Data2 & [Ô]# [Ô] & _
[Ô]GROUP BY a.codbase, a.nomebase,b.dataconsumo [Ô], cnn, 3, 3

estava faltando um espaço no &_ tente testar o código do colega agc agora
XXXANGELSXXX 20/12/2010 08:21:52
#359952
sSql2 = [Ô][Ô]
sSql2 = sSql2 & [Ô] select a.codbase,a.nomebase,[Ô]
sSql2 = sSql2 & [Ô] sum(b.qtdconsumo) as soma_qtd [Ô]
sSql2 = sSql2 & [Ô] From[Ô]
sSql2 = sSql2 & [Ô] tblbase a,tblconsumido b [Ô]
sSql2 = sSql2 & [Ô] Where[Ô]
sSql2 = sSql2 & [Ô] a.dataconsumo between [ô][Ô] & Format(DTIni.Value, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô] And [ô][Ô] & Format(DtFim.Value, [Ô]yyyy-mm-dd[Ô]) & [Ô][ô][Ô]
sSql2 = sSql2 & [Ô] group by a.codbase,a.nomebase,b.daaconsumo[Ô]
rsproduto.CursorLocation = adUseClient
rsproduto.Open sSql2, Conexao, adOpenStatic, adLockReadOnly

obs: o exemplo que fiz foi em cima de mysql. no acess o do luiz comino resolve seu problema.
MASTER2020 25/12/2010 20:10:06
#360361
OLA AMIGOS FELIZ NATAL A TODOS, CORRIGI OS ERROS NOS ESPACOS , MAS ESTA DANDO UM ERRO

OPERACAO NAO PERMITIDA NESTE CONTEXTO SERA Q A DATA

O CODIGO ATUAL ABAIXO

Dim Data1 As String
Dim Data2 As String
Data1 = Format(TxtDtIni2.Text, [Ô]dd/mm/yyyy[Ô])
Data2 = Format(TxtDtfim3.Text, [Ô]dd/mm/yyyy[Ô])


RSProduto.Open [Ô]SELECT a.codbase, a.nomebase, sum(b.qtdconsumo) soma_qtd [Ô] & _
[Ô]FROM tblbase a, tblconsumido b [Ô] & _
[Ô]WHERE a.codbase = b.produtoconsumido [Ô] & _
[Ô]AND b.dataconsumo [Ô] & _
[Ô]BETWEEN #[Ô] & Data1 & [Ô]# AND #[Ô] & Data2 & [Ô]#[Ô] & _
[Ô]GROUP BY a.codbase, a.nomebase[Ô], cnn, 3, 3

MARCELO.TREZE 25/12/2010 20:31:15
#360362
se não me angeano só funcionaria se os campos possuissem o mesmo nome, então no caso vc poreia usar o inner join.

Dim Data1 As String
Dim Data2 As String
Data1 = Format(TxtDtIni2.Text, [Ô]dd/mm/yyyy[Ô])
Data2 = Format(TxtDtfim3.Text, [Ô]dd/mm/yyyy[Ô])


RSProduto.Open [Ô]SELECT a.codbase, a.nomebase, b.produtocinsumido, b.dataconsumo, sum(b.qtdconsumo) AS soma_qtd [Ô] & _
[Ô]FROM tblbase a INNER JOIN tblconsumido b [Ô] & _
[Ô]ON a.codbase = b.produtoconsumido [Ô] & _
[Ô]AND (b.dataconsumo [Ô] & _
[Ô]BETWEEN #[Ô] & Data1 & [Ô]# AND #[Ô] & Data2 & [Ô]#) [Ô] & _
[Ô]GROUP BY a.codbase, a.nomebase[Ô], cnn, 3, 3


MASTER2020 25/12/2010 22:20:44
#360363
Obrigado marcelo treze, mas o erro perciste o mesma mensagem

operacao nao permitida neste contexto

runtime error 3219

no vb o erro e setado nesta linha em amarelo

[Ô]GROUP BY a.codbase, a.nomebase[Ô], cnn, 3, 3
MARCELO.TREZE 25/12/2010 22:35:42
#360364
então faça dois teste

primeiro tire o groupb y

depois faça alterando o group by assim

Dim Data1 As String
Dim Data2 As String
Data1 = Format(TxtDtIni2.Text, [Ô]dd/mm/yyyy[Ô])
Data2 = Format(TxtDtfim3.Text, [Ô]dd/mm/yyyy[Ô])


RSProduto.Open [Ô]SELECT a.codbase, a.nomebase, b.produtocinsumido, b.dataconsumo, sum(b.qtdconsumo) AS soma_qtd [Ô] & _
[Ô]FROM tblbase a INNER JOIN tblconsumido b [Ô] & _
[Ô]ON a.codbase = b.produtoconsumido [Ô] & _
[Ô]AND (b.dataconsumo [Ô] & _
[Ô]BETWEEN #[Ô] & Data1 & [Ô]# AND #[Ô] & Data2 & [Ô]#) [Ô] & _
[Ô]GROUP BY a.codbase, a.nomebase, b.produtocinsumido, b.dataconsumo,soma_qtd[Ô], cnn, 3, 3
Página 1 de 4 [37 registro(s)]
Tópico encerrado , respostas não são mais permitidas