AVANCADO: SQL COM GROUP BY DATA
Pessoal, depois de muito pesquisar, estou tendo dificuldades em uma consulta:
Tenho um programa em VB6 que usa Access com SQL.
Faço uma consulta agrupando por data, mas no campo data, guardo também a hora (ex.: dd/mm/yyy hh:mm:ss).
Mas o resultado está agrupando por data e hora. Gostaria de agrupar somente pela data, sem a hora.
Já tentei [Ô]GROUP BY Format(datavenda, [ô]dd/mm/yyyy[ô])[Ô] mas dá erro, pois tenho alguns campos com soma.
Veja um exemplo de como está a parte do SQL:
SELECT datavenda as Data, SUM(valorvenda) as Valor, SUM(qtdvenda) as Qtd
FROM Venda
WHERE datavenda >= # & DataInicio & #
GROUP BY datavenda ORDER BY datavenda DESC
O resultado segue assim:
12/02/2012 1.900,00 35
10/02/2012 780,00 12
10/02/2012 1.00,00 21
Era para vir a soma por dia.
Desculpe o longo texto, mas foi o que consegui melhor explicar.
Obrigado.
Tenho um programa em VB6 que usa Access com SQL.
Faço uma consulta agrupando por data, mas no campo data, guardo também a hora (ex.: dd/mm/yyy hh:mm:ss).
Mas o resultado está agrupando por data e hora. Gostaria de agrupar somente pela data, sem a hora.
Já tentei [Ô]GROUP BY Format(datavenda, [ô]dd/mm/yyyy[ô])[Ô] mas dá erro, pois tenho alguns campos com soma.
Veja um exemplo de como está a parte do SQL:
SELECT datavenda as Data, SUM(valorvenda) as Valor, SUM(qtdvenda) as Qtd
FROM Venda
WHERE datavenda >= # & DataInicio & #
GROUP BY datavenda ORDER BY datavenda DESC
O resultado segue assim:
12/02/2012 1.900,00 35
10/02/2012 780,00 12
10/02/2012 1.00,00 21
Era para vir a soma por dia.
Desculpe o longo texto, mas foi o que consegui melhor explicar.
Obrigado.
Os valores realmente são diferentes.
Mas deve haver algum modo de agrupar somente pela data, mesmo que seja gambiarra...
Em SQL existe a função Convert (), mas não funciona no VB6.
Problema já existe, solução que é necessária.
Mas deve haver algum modo de agrupar somente pela data, mesmo que seja gambiarra...
Em SQL existe a função Convert (), mas não funciona no VB6.
Problema já existe, solução que é necessária.
tenta assim
SELECT datavenda as Data, SUM(valorvenda) as Valor, SUM(qtdvenda) as Qtd
FROM Venda
WHERE Date(datavenda) >= # & Format(DataInicio,[Ô]mm/dd/yyyy[Ô]) & #
GROUP BY Date(datavenda) ORDER BY Date(datavenda) DESC
Creio que isso resolva:
No Access, quando se formata um campo na cláusula SELECT e ele tem que ser usado no Group By e Order By, toda a estrutura da formatação, passa a ser a assinatura do campo. é meio esquisito mas é assim mesmo.
Cuidado com as palavras reservadas! Em algumas versões do Access, a palavra Data destacada em vermelho não ia passar. Resolve-se colocando colchetes.
SELECT Format(datavenda,[ô]dd/mm/yyyy[ô]) as [txt-color=#e80000][Data][/txt-color], SUM(valorvenda) as Valor, SUM(qtdvenda) as Qtd
FROM Venda
WHERE datavenda >= # & DataInicio & #
GROUP BY Format(datavenda,[ô]dd/mm/yyyy[ô]) ORDER BY Format(datavenda,[ô]dd/mm/yyyy[ô]) DESC
No Access, quando se formata um campo na cláusula SELECT e ele tem que ser usado no Group By e Order By, toda a estrutura da formatação, passa a ser a assinatura do campo. é meio esquisito mas é assim mesmo.
Cuidado com as palavras reservadas! Em algumas versões do Access, a palavra Data destacada em vermelho não ia passar. Resolve-se colocando colchetes.
Leandro Laia.
Caramba;nunca tinha feito uma consulta com data com aspas simples e desse jeito,pelo menos não lembro.Deu certo.
Caramba;nunca tinha feito uma consulta com data com aspas simples e desse jeito,pelo menos não lembro.Deu certo.
Leandro e Marcelo, valeu pela dica.
Utilizando as dicas dos dois consegui resolver o problema.
Somente Format(datavenda, [ô]dd/mm/yyyy[ô]) não deu certo. Então, usei a função DateValue() em cada menção de data na consulta, e assim deu certo.
Quanto à palavra [data], é só um exemplo que utilizei aqui.
Obrigado aos dois.
Utilizando as dicas dos dois consegui resolver o problema.
Somente Format(datavenda, [ô]dd/mm/yyyy[ô]) não deu certo. Então, usei a função DateValue() em cada menção de data na consulta, e assim deu certo.
Quanto à palavra [data], é só um exemplo que utilizei aqui.
Obrigado aos dois.
Tópico encerrado , respostas não são mais permitidas