Usuário com melhor resposta
Comando SQL para agrupar resultados semanalmente e mensalmente

Pergunta
-
Estou aqui com um problema que não consigo encontrar a solução, talvez eu não esteja pesquisando pelos termos certos, mas resolvi pedir ajuda.
Preciso filtrar e agrupar os resultados de um select semanalmente e mensalmente, mesmo que seja de uma data passa como por exemplo, eu estou na quarta, preciso mostrar os resultados de segunda até na sexta.
No firebird isso era fácil de fazer, mas no sql server eu não estou conseguindo, como fazer?
Respostas
-
Cara, você pode usar datediff para isso.
Por exemplo, você tem um campo data na tabela, a partir dela voce escolhe uma data, setando week como parâmetro e ele agrupará por semanas a partir da data que você setou.
Exemplo:
SELECT Produto, Semana, SUM(Vendas) FROM ( SELECT Produto, DATEDIFF(week, '2011-05-30', Data) AS Semana, Vendas FROM Tabela ) GROUP BY Produto, Semana
Para o mês é o mesmo conceito, porém, você troca week por month :)
Leonardo D'Amato
- Editado Leonardo N. D'Amato terça-feira, 20 de outubro de 2015 18:49
- Marcado como Resposta Marcos SJ terça-feira, 20 de outubro de 2015 19:13
Todas as Respostas
-
-
Cara, você pode usar datediff para isso.
Por exemplo, você tem um campo data na tabela, a partir dela voce escolhe uma data, setando week como parâmetro e ele agrupará por semanas a partir da data que você setou.
Exemplo:
SELECT Produto, Semana, SUM(Vendas) FROM ( SELECT Produto, DATEDIFF(week, '2011-05-30', Data) AS Semana, Vendas FROM Tabela ) GROUP BY Produto, Semana
Para o mês é o mesmo conceito, porém, você troca week por month :)
Leonardo D'Amato
- Editado Leonardo N. D'Amato terça-feira, 20 de outubro de 2015 18:49
- Marcado como Resposta Marcos SJ terça-feira, 20 de outubro de 2015 19:13
-
Infelizmente não é isso que preciso, ou não consegui implementar corretamente.
Eu preciso de uma condição que me mostre os resultados somente de determinada semana e mês passando como parâmetro uma data. Eu precisaria identificar de qual semana e/ou mês é a data informada e então filtrar os resultados a partir disso.
-
Não sei se é o jeito correto de fazer, mas o seguinte jeito de fazer parece que vai resolver o meu problema, só precisando passar uma data escolhida pelo usuário como parâmetro. No caso, o comando me mostrou todos os resultados do mês 09.
SELECT codConsulta, dataConsulta
FROM Consultas
WHERE MONTH(dataConsulta) = MONTH ('2015-09-15');