7 Replies Latest reply: Nov 25, 2014 2:18 PM by marcel viegas RSS

    Meses anteriores

    marcel viegas

      Boa tarde pessoa,

       

      Preciso de uma ajuda bem simples, tenho uma tabela (produtoMes): em cima desta tabela no meu scrip eu gostaria de montar uma outra tabela que computasse a soma de todos os meses anteriores exemplo abaixo(soma_M_anterior) :

       

        produtoMes:

        mes       | produto       | valor

        01/2013  | ventilador   | 1000

        02/2013  | lampada     | 1000

        03/2013  | vassoura    | 1000

        04/2013  | saco de lixo| 1000

        05/2013  | caneta        | 1000

       

      soma_M_anterior:

          mes  |valor

      01/2013|1000

      02/2013|2000

      03/2013|3000

      04/2013|4000

      05/2013|5000

       

      Obrigado Pessoal

        • Re: Meses anteriores
          Yuri Nicolett

          Marcel, você pode fazer isso de duas formas

           

          1) Fazer esse cálculo no script através da função Peek()

           

           

          2) Criar um de/para de mês, da seguinte forma:

           

          DE PARA

          Jan/2014, Jan/2014

          Fev/2014. Jan/2014

          Fev/2014, Fev/2014

          Mar/2014, Jan/2014

          Mar/2014, Fev/2014

          Mar/2014, Mar/2014

           

          Dai basta você ligar a coluna PARA com a sua coluna de MêsAno da tabela fato.

            • Re: Meses anteriores
              Yuri Nicolett

              Segue um exemplo de acumulado no script através do Peek

               

               

              Peek:

              LOAD * INLINE [

              MES, VALOR, PRODUTO

              1, 10, A

              1, 20, A

              1, 30, A

              2, 10, A

              2, 20, A

              3, 10, A

              4, 10, A

              5, 10, A

              6, 10, A

              6, 20, A

              7, 10, A

              7, 20, A

              8, 10, A

              9, 10, A

              9, 20, A

              9, 30, A

              10, 10, A

              1, 11, B

              1, 21, B

              1, 31, B

              2, 12, B

              2, 22, B

              3, 12, B

              4, 12, B

              5, 13, B

              6, 13, B

              6, 23, B

              7, 13, B

              7, 24, B

              8, 14, B

              9, 14, B

              9, 24, B

              9, 34, B

              10, 14, B

              1, 311, C

              1, 321, C

              1, 231, C

              2, 212, C

              2, 122, C

              3, 112, C

              4, 212, C

              5, 213, C

              6, 313, C

              6, 323, C

              7, 213, C

              7, 224, C

              8, 114, C

              9, 114, C

              9, 224, C

              9, 234, C

              10, 214, C

              ];

               

               

              Acumulado:

              LOAD

                MES,

                VALOR,

                if(

                MES <> Previous(MES),

                NumSum(VALOR),

                NumSum(Peek('ACUMULADO_POR_MES', -1)) + NumSum(VALOR)

                ) as ACUMULADO_POR_MES,

                

                RangeSum(Peek('ACUMULADO_TOTAL', -1)) + RangeSum(VALOR) as ACUMULADO_TOTAL

              RESIDENT Peek

              ORDER BY

                MES asc;

                • Re: Meses anteriores
                  marcel viegas

                  tentei substituir os campos igual o da tabela, porem ele diz que o campo  ACUMULADO_POR_MES' e 'ACUMULADO_TOTAL' não existe, sera que crio essa campo na tabela anterior?

                  seria bom se existisse uma funão tipo peek(-*), para somar todas anteriores.


                   

                    • Re: Meses anteriores
                      marcel viegas

                      Eduardo, não pode ser assim pois eu uso outros campos no grafico que se eu colocar a função acumulado ele da problema nos calculos, teria que ser diretamente no script.

                      • Re: Meses anteriores
                        Yuri Nicolett

                        Se você fizer da forma que te passei não é para dar erro, só se deu algum problema quando copiei o código.

                        Poderia postar seu código aqui?

                         

                        Respondendo a pergunta: Não precisa criar essas colunas antes, pois o Peek() consegue reutilizar o valor dessa coluna que esta sendo criada.

                          • Re: Meses anteriores
                            marcel viegas

                            cria:

                            LOAD LeitoCriacao.ID_LEITO_CRIACAO,

                                 LeitoCriacao.ID_LEITO,

                                 LeitoCriacao.DT_CRIACAO,

                                 MonthName(LeitoCriacao.DT_CRIACAO) as dataCriacao,

                                 Year(LeitoCriacao.DT_CRIACAO)&Num( Month(LeitoCriacao.DT_CRIACAO),'00')&Num( Day(LeitoCriacao.DT_CRIACAO), '00' ) as ID_CALENDARIO

                               //  Year(LeitoCriacao.DT_CRIACAO)&Num( Month(LeitoCriacao.DT_CRIACAO),'00') as dataCriacao

                            FROM

                            $(dirQVD)\INTERNACAO\qvd_e\tbe_leito_criacao.qvd

                            (qvd);

                             

                             

                             

                             

                             

                             

                            criacao:

                            load

                            dataCriacao as [Mes Ano], COUNT(LeitoCriacao.ID_LEITO_CRIACAO) AS CONTLEITOCRIACAO

                            Resident cria

                            group by dataCriacao;

                             

                             

                             

                             

                             

                             

                             

                             

                            leitoNovo:

                            load count(LeitoCriacao.ID_LEITO) as leitoSub

                            Resident cria;

                             

                             

                            drop table cria;

                             

                             

                             

                             

                            Acumulado:

                            LOAD

                              dataCriacao as [Mes Ano],

                              CONTLEITOCRIACAO,

                              if(

                              dataCriacao <> Previous(dataCriacao),

                              NumSum(CONTLEITOCRIACAO),

                              NumSum(Peek('ACUMULADO_POR_MES', -1)) + NumSum(CONTLEITOCRIACAO)

                              ) as ACUMULADO_POR_MES,

                             

                              RangeSum(Peek('ACUMULADO_TOTAL', -1)) + RangeSum(CONTLEITOCRIACAO) as ACUMULADO_TOTAL

                            RESIDENT criacao

                            ORDER BY

                              dataCriacao asc;

                             

                            o arquivo qvd todo é muito grande, então estou colando ai...

                             

                            vlw.

                    • Re: Meses anteriores
                      Eduardo Alexandre

                      Já tentou a opção de acumular dentro do grafico?

                       

                      Tente carregar seus dados e depois marque a opção Acumulado. acrediro que irá te ajudar