none
Comando SQL para agrupar resultados semanalmente e mensalmente RRS feed

  • 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?

    terça-feira, 20 de outubro de 2015 18:27

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
    terça-feira, 20 de outubro de 2015 18:48

Todas as Respostas

  • No caso um select usando between não funciona?

    Select CAMPOS From TABELA Where DATA between '2015-10-19' and '2015-10-23'

    terça-feira, 20 de outubro de 2015 18:47
  • 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
    terça-feira, 20 de outubro de 2015 18:48
  • 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.

    terça-feira, 20 de outubro de 2015 19:38
  • 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');

    terça-feira, 20 de outubro de 2015 19:51