CONSULTA SQL MES E ANO

ARES 11/04/2012 14:15:11
#399595
Amigos, boa tarde!

Estou tentando fazer uma código SQL (banco de dados MYSQL) que me retorno o mes e ano.

Tenho um listview que abrirá com os dados de vendas da seguinte forma:

Mês Total quilos Total R$
Janeiro/2012 100 1.000,00
Fevereiro/2012 200 2.000,00

Tenho que agrupar as informações de forma a me retornar da maneira supra, lembrando que todos os dias tem vendas.

no código abaixo as informações estão dobrando no mês 7 dando problema na chave do listview.

Qual seria a consulta correta que tenho que montar? segue o código que estou usando;

Public Sub abre_grupo_analitico()
Dim scnn As String
Dim newlist As ListItem
lista2.ListItems.Clear
[ô]On Error Resume Next

mycon.Open [Ô]dsn=asgard_salles[Ô]

With mycmd
.ActiveConnection = mycon
.CommandType = adCmdText

If frminicial.txtemp = [Ô]170[Ô] Then

.CommandText = [Ô]select distinct year(vendas.data)as ydata, month(vendas.data)as ddata, vendas.grupo, sum(vendas.embalagem * vendas.quantidade) as quilos, sum(valor_total) as reais, vendas.cliente from vendas where cliente = [Ô] & Val(Me.txtcliente) & [Ô] and vendas.grupo = [ô][Ô] & lista.SelectedItem.SubItems(1) & [Ô][ô] group by vendas.data,vendas.grupo, vendas.cliente[Ô]
Set myrs = .Execute

ElseIf frminicial.txtemp = [Ô]190[Ô] Then

.CommandText = [Ô]select distinct year(vendas190.data)as ydata, month(vendas190.data)as ddata, vendas190.grupo, sum(vendas190.embalagem * vendas190.quantidade) as quilos, sum(valor_total) as reais, vendas190.cliente from vendas190 where cliente190 = [Ô] & Val(Me.txtcliente) & [Ô] and vendas190.grupo = [ô][Ô] & lista.SelectedItem.SubItems(1) & [Ô][ô] group by vendas190.data,vendas190.grupo, vendas190.cliente[Ô]
Set myrs = .Execute

End If

End With
Do Until myrs.EOF
Set newlist = lista2.ListItems.Add(, [Ô] Key [Ô] & myrs([Ô]ddata[Ô]), myrs([Ô]ddata[Ô]))
newlist.SubItems(1) = [Ô][Ô] & myrs([Ô]quilos[Ô])
newlist.SubItems(2) = [Ô][Ô] & myrs([Ô]reais[Ô])
myrs.MoveNext
Loop
myrs.Close
Set myrs = Nothing
mycon.Close

End Sub


Desde já agradeço.
LLAIA 11/04/2012 14:32:36
#399605
Se os registros das duas tabelas são exatamente iguais, e vc precisa só de uma cópia dos registros, vc poderia UNION pra resolver isso:

[Ô]select distinct year(vendas.data)as ydata, month(vendas.data)as ddata,  vendas.grupo, sum(vendas.embalagem * vendas.quantidade) as quilos, sum(valor_total) as reais, vendas.cliente from vendas where cliente = [Ô] & Val(Me.txtcliente) & [Ô] and vendas.grupo = [ô][Ô] & lista.SelectedItem.SubItems(1) & [Ô][ô] group by vendas.data,vendas.grupo, vendas.cliente[Ô] _
& [Ô] UNION [Ô] _
&[Ô]select distinct year(vendas190.data)as ydata, month(vendas190.data)as ddata, vendas190.grupo, sum(vendas190.embalagem * vendas190.quantidade) as quilos, sum(valor_total) as reais, vendas190.cliente from vendas190 where cliente190 = [Ô] & Val(Me.txtcliente) & [Ô] and vendas190.grupo = [ô][Ô] & lista.SelectedItem.SubItems(1) & [Ô][ô] group by vendas190.data,vendas190.grupo, vendas190.cliente[Ô]
ARES 11/04/2012 15:23:55
#399612
Amigo, obrigado pela resposta!


Entretanto, minha necessidade não é de agrupar as consultas, preciso fazer um filtro por mes e ano e apresentar no listview.
Quanto as duas tabelas, o motivo é que são empresas diferentes então é condicionado em qual empresa os dados serão filtrados.

Em minha tabela tenho a seguinte informação:

Data grupo embalagem quantidade valor_total
01/01/2012 eukanuba 15 10 100,00
01/01/2012 eukanuba 1 5 20,00
05/01/2012 eukanuba 7,5 10 100,00
01/02/2012 eukanuba 3 2 30,00
05/02/2012 brouwer 1 20 150,00
10/03/2012 eukanuba 15 5 20,00

Apresentação no listview

Mes/ano Quilos Total R$
Janeiro/12 230 220,00
Fevereiro/12 81 50,00

Bom, assim quando o usuário selecionar o grupo os dados serão agrupados conforme descrito acima.

Desde já agradeço
EDMARMUNHOZ 12/04/2012 10:27:24
#399673
Resposta escolhida
Cara tenta fazer assim:

 select month(data) as Mês, sum(quantidade) as Quilos, sum(valor_total) as Total from Tabela grupo by month(data)  


[Ô]month[Ô] em sql pega sómente o mês da data com o [Ô]sum[Ô] vc ta mandando somar td e depois está agrupando por mês.

Blz?

qq coisa tamo ae.
LLAIA 12/04/2012 13:56:16
#399696
Então use HAVING após o GROUP BY:

select distinct year(vendas.data)as ydata, month(vendas.data)as ddata,  vendas.grupo, sum(vendas.embalagem * vendas.quantidade) as quilos, sum(valor_total) as reais, vendas.cliente from vendas where cliente = [Ô] & Val(Me.txtcliente) & [Ô] and vendas.grupo = [ô][Ô] & lista.SelectedItem.SubItems(1) & [Ô][ô] group by vendas.data,vendas.grupo, vendas.cliente HAVING year(vendas.data) = AnoDigitado AND month(vendas.data) = MesDigitado 
Tópico encerrado , respostas não são mais permitidas