Ir ao conteúdo
  • Cadastre-se

Consulta últimos meses sql access


Posts recomendados

Olá, preciso efetuar uma consulta que me retorne o número de acessos dos últimos 3 meses a partir da última data máxima registrada no banco(não é necessariamente o mês atual a última data).

Consigo pegar o último mês utilizando "Month(Max([RESUMO]![Data])" porém quando faço o código da seguinte maneira:

SELECT RESUMO.Data, Sum(RESUMO.Acesso) AS SumOfAcessoFROM RESUMOGROUP BY RESUMO.DataHAVING Month([RESUMO]![Data])>Month(Max([RESUMO]![Data]))-3
 
Todos meses são me retornados, pela lógica imagino que apenas os meses que são maiores que o máximo menos 3 deveriam vir, mas não é o que acontece.
 
Alguma dica ?
Link para o comentário
Compartilhar em outros sites

Você quer retornar algo em um período de 3 meses certo?

 

Por que então você não põe isso no where, de forma bem mais simples?

 


SET @mes_limite:=10;
SET @ano_limite:=2014;
 
SELECT RESUMO.Data
      ,Sum(RESUMO.Acesso) AS SumOfAcesso
FROM RESUMO
WHERE MONTH(RESUMO.Data) BETWEEN @mes_limite - 2 AND @mes_limite
  AND YEAR(RESUMO.Data) = @ano_limite
GROUP BY RESUMO.Data;

 

Bom, se o mês limite for um MARÇO, então trará resultados de MARÇO menos 2, que é JANEIRO, até MARÇO (ou seja, 3 meses).

 

Coloquei um tratamento para o ANO, mas isso fica com você melhorar, pois se pedir um relatório de FEVEREIRO, terá que fazer um tratamento adequado pra retornar o que precisas.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

 

Você quer retornar algo em um período de 3 meses certo?
 
Por que então você não põe isso no where, de forma bem mais simples?
 
SET @mes_limite:=10;SET @ano_limite:=2014; SELECT RESUMO.Data      ,Sum(RESUMO.Acesso) AS SumOfAcessoFROM RESUMOWHERE MONTH(RESUMO.Data) BETWEEN @mes_limite - 2 AND @mes_limite  AND YEAR(RESUMO.Data) = @ano_limiteGROUP BY RESUMO.Data;
 
Bom, se o mês limite for um MARÇO, então trará resultados de MARÇO menos 2, que é JANEIRO, até MARÇO (ou seja, 3 meses).
 
Coloquei um tratamento para o ANO, mas isso fica com você melhorar, pois se pedir um relatório de FEVEREIRO, terá que fazer um tratamento adequado pra retornar o que precisas.

 

 

 

Obrigado pela sugestão, acabei de conseguir resolver parcialmente de uma forma aparentemente mais simples e estava vindo aqui postar , porém agora não estou conseguindo nessa mesma consulta retornar a soma dos acessos desses 3 meses retornados, é possível fazer isso com o que fiz abaixo ?

SELECT TOP 3 RESUMO.Data, Sum(RESUMO.Acesso) AS SumOfAcessoFROM RESUMOGROUP BY RESUMO.DataORDER BY RESUMO.Data DESC;

Dessa forma tenho como retorno:

 

Data            SumOfAcesso
01/10/2014 45470
01/09/2014 45355
01/08/2014 43981
 
É possível adicionar nessa mesma consulta um campo total com a soma de SumOfAcesso ?
Link para o comentário
Compartilhar em outros sites

Oi Sunscreen.

 

O comando TOP eu pra falar a vdd nunca usei, mas entendi como funciona

 

Você pode fazer um SELECT externo nesse mesmo SELECT já pronto, bem simples...

 


SELECT SUM(SumOfAcesso) AS TOTAL FROM (
   SELECT TOP 3 RESUMO.Data, Sum(RESUMO.Acesso) AS SumOfAcesso
   FROM RESUMO
   GROUP BY RESUMO.Data
   ORDER BY RESUMO.Data DESC;
) AS S1 GROUP BY SumOfAcesso;

Link para o comentário
Compartilhar em outros sites

Deu certo da seguinte maneira:

SELECT TOP 3     Format (R.Data,"@") AS DataAcesso,     Sum (R.Acesso) AS SumOfAcesso  From Resumo R  Group by R.Data  Order by R.Data DESCUnionSelect    "Total",    SUM(auxsum)  From ( SELECT TOP 3 Sum(R.Acesso) as auxsum              From Resumo R              Group by R.Data              Order by R.Data DESC  )
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...