Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #93396
    ericclauber
    Participante

      Boa tarde pessoal… estou precisando de ajuda.

      Estou fazendo um relatório de comissões, sendo que devera ser de mes a mes. Por exemplo.

      janeiro | fevereiro | março
      valor | valor | valor

      Pergunto como faço para colacar esses totais por mes.

      Grato pelo ajuda!!!

      #93402
      Avatar photoRegis Araujo
      Participante

        Opa..!

        Use o “CASE”.. creio que irá te ajudar..!!

        Ex:.

        select
        sum("case" when MES = 1 then valor else 0 end) JANEIRO,
        sum("case" when MES = 2 then valor else 0 end) FEVEREIRO,
        sum("case" when MES = 3 then valor else 0 end) MARCO
        FROM (SELECT 1 "MES", 4 "VALOR" FROM DUAL
        "UNION ALL"
        SELECT 1 "MES", 4 "VALOR" FROM DUAL
        "UNION ALL"
        SELECT 2 "MES", 4 "VALOR" FROM DUAL
        "UNION ALL"
        SELECT 3 "MES", 4 "VALOR" FROM DUAL);

        Basta vc substituir o numeral do mes pelo nome do mes e assim por adiante..!!

        Vc pode fazer um group by, mas ira aparecer linear.. e não colunar…


        select mes, sum(valor) from tabela
        group by mes;

        Abraços.. espero ajude..

        #93404
        Avatar photoRegis Araujo
        Participante

          Putz..

          Tem algum bug.. se eu deixo o “CASE” e o “UNION ALL” sem as “” ele não manda a mensagem..!

          Bom.. basta retirar as “” para rodar o comando..!!!!

          Abraços..!!!

          #93413
          ericclauber
          Participante

            Opa Thunder_Catz, tudo bem. Este select abaixo. me fornece o resultado do mes se eu especificar o periodo no where ou no meu filtro do relatorio, resultando em somente uma soma total e nao mes a mes. E consigo ter o resultado da soma da coluna (valor), so que é conforme eu especifico o periodo. Entao em cima deste select abaixo, preciso ter o resultato do mes a mes. Para que quando eu especifique os ultimos 12 meses por exemplo. Ele me traga a cada mes. Veja exemplo abaixo. Agradeço

            ***** Este exemplo é com deveria ficar. *****

            COD……….FORNECEDOR……………………………..Vl_mes1 – Vl_mes2…
            1912…AGROBASAS/A-FORTALEZA…………………….0,62……….2,22
            1087…ALCOOL SANTA CRUZ LTDA…………………….9,80……….32,00
            873…..AMAFIL IND.E COM.DE ALIMENTOS LTDA……0,46……….6,25
            1494…ANDIJU ALIMENTOS LTDA0………………………0,59………5,00
            1040…ANGELO AURICCHIO & CIA LTDA. OLE……….2,23………13,25
            1624…ARCOR DO BRASIL LTDA…………………………7,91………4,89
            ………………………………………………….TOTAIS….. SOMA…….SOMA…

            ****Neste select consigo obter somente uma coluna do valor, sendo somada em 1 resultado.***** Mas ate aqui esta correto.

            SELECT pcmov.codfornec, pcfornec.fornecedor,pcmov.codusur, pcusuari.nome,
            ROUND(SUM (((pcmov.punitcont * pcmov.percom / 100) * pcmov.qtcont)),2) valor
            FROM pcusuari, pcfornec, pcmov
            WHERE pcmov.codfornec = pcfornec.codfornec
            AND pcmov.codusur = pcusuari.codusur
            AND pcmov.codoper = ‘S’
            GROUP BY pcmov.codfornec, pcfornec.fornecedor,pcmov.codusur, pcusuari.nome
            ORDER BY valor desc

            #93416
            Avatar photoLeonardo Litz
            Participante

              Você pode utilizar a função CUBE:

              tente assim:


              SELECT pcmov.codfornec, pcfornec.fornecedor,pcmov.codusur, pcusuari.nome,
              ROUND(SUM (((pcmov.punitcont * pcmov.percom / 100) * pcmov.qtcont)),2) valor
              FROM pcusuari, pcfornec, pcmov
              WHERE pcmov.codfornec = pcfornec.codfornec
              AND pcmov.codusur = pcusuari.codusur
              AND pcmov.codoper = 'S'
              GROUP BY CUBE(pcmov.codfornec, pcfornec.fornecedor,pcmov.codusur, pcusuari.nome)
              ORDER BY valor desc

              VLW Leonardo Litz!

              #93420
              burga
              Participante

                Seguindo a lógica do Thunder e já transformando meses em colunas, você pode fazer o seguinte:

                with t1 as
                (select 1 pessoa, 1 comissao, sysdate + 30 data from dual
                union all
                select 1, 2, sysdate from dual
                union all
                select 2, 2, sysdate - 45 from dual
                union all
                select 2, 2, sysdate - 80 from dual
                union all
                select 2, 2, sysdate + 60 from dual
                union all
                select 1, 2, sysdate + 30 from dual)
                select pessoa,
                sum(mes1),
                sum(mes2),
                sum(mes3),
                sum(mes4),
                sum(mes5),
                sum(mes6),
                sum(mes7),
                sum(mes8),
                sum(mes9),
                sum(mes10),
                sum(mes11),
                sum(mes12)
                from
                (select pessoa,
                case when to_char(data,'MM') = 01 then comissao else 0 end mes1,
                case when to_char(data,'MM') = 02 then comissao else 0 end mes2,
                case when to_char(data,'MM') = 03 then comissao else 0 end mes3,
                case when to_char(data,'MM') = 04 then comissao else 0 end mes4,
                case when to_char(data,'MM') = 05 then comissao else 0 end mes5,
                case when to_char(data,'MM') = 06 then comissao else 0 end mes6,
                case when to_char(data,'MM') = 07 then comissao else 0 end mes7,
                case when to_char(data,'MM') = 08 then comissao else 0 end mes8,
                case when to_char(data,'MM') = 09 then comissao else 0 end mes9,
                case when to_char(data,'MM') = 10 then comissao else 0 end mes10,
                case when to_char(data,'MM') = 11 then comissao else 0 end mes11,
                case when to_char(data,'MM') = 12 then comissao else 0 end mes12
                from t1)
                group by pessoa;

                Isso considerando que existe um campo data na tabela pra você poder separar mês a mês.

                #93430
                ericclauber
                Participante

                  só um OBS: não preciso do resultado das somas das colunas, este faço pelo leyout do relatório. Só preciso dos valosres mes a mes.

                  Até aqui valeu pela ajuda pessoal…

                Visualizando 7 posts - 1 até 7 (de 7 do total)
                • Você deve fazer login para responder a este tópico.