none
Agrupar resultados da consulta por MONTH (mês) RRS feed

  • Pergunta

  • Bom dia,

    Tenho uma tabela onde os campos são os seguintes: Data,Produto,Valor,Qtd

    Data                 Produto                     Valor                     Qtd

    01/01/2016         001                       1,0                        10

    10/01/2016         002                        1,0                         5

    01/02/2016         001                        1,0                         8

    11/02/2016         002                        1,0                         1

    15/03/2016         001                        1,0                         2

    Eu preciso dar um total por mês multiplicando a qtd * valor e somar os totais.

    Ex.       Mês 01

                Produto 001 (valor*qtd) + Produto 002 (valor*qtd) = total

    Mês 02

                Produto 001 (valor*qtd) + Produto 002 (valor*qtd) = total

                Mês 03

                Produto 001 (valor*qtd) = total



    • Editado Leandro HG quarta-feira, 30 de março de 2016 13:05
    quarta-feira, 30 de março de 2016 13:04

Respostas

  • Bom dia,

    Creio que o melhor neste caso seja agrupar por mês e ano, para não agrupar meses de 2015 e 2016 por exemplo. Então você pode fazer assim:

    SELECT 
    'Ano' = YEAR(Data),
    'Mes' = MONTH(Data),
    'Total' =  SUM(Valor * Qtd)
    FROM TABELA
    GROUP BY 
    YEAR(Data), MONTH(Data)



    Pedro Henrique B. Fernandes
    MCPD - Web Developer 4
    Site: pedrofernandes.net

    • Sugerido como Resposta Roberto AB Filho quarta-feira, 30 de março de 2016 14:14
    • Marcado como Resposta Marcos SJ quarta-feira, 30 de março de 2016 14:20
    • Não Marcado como Resposta Leandro HG quarta-feira, 30 de março de 2016 14:36
    • Marcado como Resposta Leandro HG quarta-feira, 30 de março de 2016 14:36
    quarta-feira, 30 de março de 2016 13:58

Todas as Respostas

  • tente assim:

    SELECT 
    MONTH(Data) AS MES,  SUM(Valor*Qtd) as TOTAL
    FROM TABELA
    GROUP BY MONTH(Data)


    "A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski

    quarta-feira, 30 de março de 2016 13:40
  • Bom dia,

    Não sei se entendi corretamente, mas experimente mais ou menos dessa forma:

    select
        Month(Data) as Mes,
        sum(Valor * Qtd) as Total
    from Tabela
    where
        Data between '20160101' and '20160331'
    group by
        Month(Data)


    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 30 de março de 2016 13:42
  • Bom dia,

    Creio que o melhor neste caso seja agrupar por mês e ano, para não agrupar meses de 2015 e 2016 por exemplo. Então você pode fazer assim:

    SELECT 
    'Ano' = YEAR(Data),
    'Mes' = MONTH(Data),
    'Total' =  SUM(Valor * Qtd)
    FROM TABELA
    GROUP BY 
    YEAR(Data), MONTH(Data)



    Pedro Henrique B. Fernandes
    MCPD - Web Developer 4
    Site: pedrofernandes.net

    • Sugerido como Resposta Roberto AB Filho quarta-feira, 30 de março de 2016 14:14
    • Marcado como Resposta Marcos SJ quarta-feira, 30 de março de 2016 14:20
    • Não Marcado como Resposta Leandro HG quarta-feira, 30 de março de 2016 14:36
    • Marcado como Resposta Leandro HG quarta-feira, 30 de março de 2016 14:36
    quarta-feira, 30 de março de 2016 13:58
  • É incrível como complicamos situações tão simples...na minha cabeça fiz um nó pensando como eu deveria filtrar a consulta, daí vem um cara que tem o dom e em poucas linhas mata o problema...kkk  <o:p></o:p>

    Obrigado Pedro e ao pessoal que postou para essa ajuda!<o:p></o:p>

    quarta-feira, 30 de março de 2016 14:35