Ir ao conteúdo

Consulta últimos meses sql access


Sunscreen

Posts recomendados

Postado

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 ?
Postado
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.

Postado

 

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 ?
Postado
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;

Postado

É esse TOP 3 endemoniado aí ^^ (to testando com mysql)

 

Isso resolve:
 
SELECT SUM(SumOfAcesso) AS TOTAL FROM (   SELECT Data, Sum(Acesso) AS SumOfAcesso   FROM RESUMO   GROUP BY Data   ORDER BY Data DESC LIMIT 0,3) AS S1 GROUP BY SumOfAcesso;
Postado

Agora deu "Syntax error in Order BY clause." será que o access suporta esse limit ?

 

@tenho que sair, amanhã de manhã volto e digo se houve algum progresso hehe

Postado

A entendi... é por isso que citei que estou usando mysql, desconfiei q tivesse problema entre a linguagem q estou fazendo, e a linguagem q você está usando =/

 

Sobre access não sei te dizer como ficaria esse select

Postado

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  )

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!