CONSULTA SQL MES E ANO
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.
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.
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[Ô]
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
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
Cara tenta fazer assim:
[Ô]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.
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.
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