7 Replies Latest reply: Jan 11, 2017 1:28 PM by Gabriel Erich Koeke RSS

    Totais mesma coluna

    Gabriel Erich Koeke

      Bom dia, criei algumas variaveis para fazer o calculo de determinadas linhas da tabela:

      SET vVendaServico = =fabs(Sum ({$ <cod_desc_nivel3={'1.1.1-VENDA DE SERVIÇOS'}>} VALOR));
      SET vCustoServico = =fabs(Sum ({$ <cod_desc_nivel3={'1.2.1-CUSTO DOS SERVIÇOS'}>} VALOR));
      SET vReceitaLiquida = =vVendaServico - vCustoServico;
      SET vContribuicaoMarginal = =fabs(Sum ({$ <cod_desc_nivel1={'5-CONTRIBUIÇÃO MARGINAL'}>} VALOR));

      SET vCustosServicosPrestados = =fabs(Sum ({$ <cod_desc_nivel1={'6-CUSTOS DOS SERVICOS PRESTADOS'}>} VALOR));

      SET vMargemBruta = =vContribuicaoMarginal - vCustosServicosPrestados;
      SET vDespesasOPeracionais = =fabs(Sum ({$ <cod_desc_nivel1={'8-DESPESAS OPERACIONAIS'}>} VALOR));
      SET vEbitida = =vMargemBruta - vDespesasOPeracionais;
      SET vDepreciacao = =fabs(Sum ({$ <cod_desc_nivel1={'10-DEPRECIAÇÃO'}>} VALOR));
      SET vRAJIR = =vEbitida - vDepreciacao;
      SET vResultadoFinanceiro = =fabs(Sum ({$ <cod_desc_nivel1={'12-RESULTADO FINANCEIRO'}>} VALOR));
      SET vResultadoOperacional = =vRAJIR - vResultadoFinanceiro;

       

      Como que eu posso proceder para deixar esses totais, todos na mesma coluna, para mostrar os valores tive que colocar em expressões separadas.

      Capturaree.PNG

      dai na expressao eu coloquei IF(cod_desc_nivel1='3-RECEITA OPERACIONAL LIQUIDA',vReceitaLiquida ).

      Existe alguma maneira de unir todos os totais em um lugar? Fico no aguardo.

        • Re: Totais mesma coluna
          Márcio Rodrigo Campestrini

          Boa tarde Gabriel

           

          Talvez funcione utilizando outra variável com parâmetros. Dê uma olhada em Variables with Parameters

          • Re: Totais mesma coluna
            rodrigo silvestre

            Cara, melhor maneira de fazer isso no meu ponto de vista é direto no script. Vai criando vários LOADs usando a condicional no where e concatenando um no outro, com os campos em comum, um campo valor e um de nivelamento... Pode parecer mais trabalhoso no começo, mas muito melhor em questão de performance , usabilidade na aplicação e até mesmo para você dar manutenção depois.

              • Re: Totais mesma coluna
                Gabriel Erich Koeke

                Boa tarde Rodrigo, obrigado pelo retorno, você conseguiria algum exemplo que eu pudesse ter como base?

                  • Re: Totais mesma coluna
                    rodrigo silvestre

                    Fato:

                    //VendaServico

                    LOAD

                         'RECEITA OPERACIONAL BRUTA' as Nivel,

                         1    as Order_Tab,    // esse é um campo apenas para você criar uma ordenação, poder classificar por ele

                         fabs(sum(valor)) as Valor ,

                         fabs(sum(valor)) as Valor_1 // Campo temporário apenas para cálculo da receita liquida

                    from tabela

                    where cod_desc_nivel3 = '1.1.1-VENDA DE SERVIÇOS' ;

                     

                    concatenate(Fato)

                    // CustoServico

                    LOAD

                         'CUSTO DOS SERVIÇOS' as Nivel,

                         2    as Order_Tab,    // esse é um campo apenas para você criar uma ordenação, poder classificar por ele

                         fabs(sum(valor)) as Valor ,

                         fabs(sum(valor)) as Valor_2 // Campo temporário apenas para calculo da receita liquida

                    from tabela

                    where cod_desc_nivel3 = '1.2.1-CUSTO DOS SERVIÇOS' ;


                    concatenate(Fato)

                    //Receita liquida

                    LOAD

                         'RECEITA LIQUIDA'  as Nivel

                         3    as Order_Tab,    // esse é um campo apenas para você criar uma ordenação, poder classificar por ele

                    sum(Valor_1) - sum( Valor_2) as Valor

                    resident Fato;

                     

                    drop fields Valor_1 , Valor_2 ; // apagando os campos temporários que não serão mais usados...

                     

                    concatenate(Fato)


                    ....

                     

                    /* e assim por diante.... aqui eu to fazendo cada linha do nivel 1 um load , se forem muitos níveis você pode fazer

                    um load para todos níveis que já existem e dai outros loads para os que precisam de cálculo.*/

                      • Re: Totais mesma coluna
                        Gabriel Erich Koeke

                        Bom dia Rodrigo, obrigado pelo retorno, como eu poderia proceder no caso, 1.1.1-VENDA DE SERVIÇOS e 1.2.1-CUSTO DOS SERVIÇOS, estão na nivel 3, que é uma tabela do banco de dados, dai o valor desses dois preciso apresentar na tabela nivel 1, 3-RECEITA OPERACIONAL LIQUIDA. Esse é o unico calculo que preciso fazer, que não estão todos na mesma tabela. Todos os outros ficam na mesma tabela nivel 1. Outra duvida, não estou criando os QVD deles, seria interessante criar? Cada um dos niveis é uma tabela do banco. Espero que possa me ajudar.

                        Capturar.PNG

                  • Re: Totais mesma coluna
                    Yuri Nicolett

                    Gabriel, no post abaixo existe um detalhe de como criar essas estruturas de DRE, vai ficar mais fácil de você compreender.

                     

                     

                    How to Create a Profit and Loss Statement in QlikView

                      • Re: Totais mesma coluna
                        Gabriel Erich Koeke

                        Boa tarde Yuri, tentei me basear pelo exemplo mas não tive sucesso, dai criei variáveis para o cálculos

                        Script:

                        SET vReceitaBruta='=fabs(Sum ({$ <NIVEL1_ID={1}>} VALOR))';

                        SET vDeducoesReceita = =fabs(Sum ({$ <NIVEL1_ID={2}>} VALOR));

                        SET vCustoVarVendas = =fabs(Sum ({$ <NIVEL1_ID={4}>} VALOR));

                        SET VendaServico = =fabs(Sum ({$ <NIVEL3_ID={1}>} VALOR));

                        SET vIncentivo = =fabs(Sum ({$ <NIVEL3_ID={2}>} VALOR));

                        SET CustoServico = =fabs(Sum ({$ <NIVEL3_ID={3}>} VALOR));

                        SET vReceitaLiquida = =vReceitaBruta - vDeducoesReceita;

                        SET vContribuicaoMarginal = =fabs(Sum ({$ <NIVEL1_ID={5}>} VALOR));

                        SET vCustosServicosPrestados = =fabs(Sum ({$ <NIVEL1={'6-CUSTOS DOS SERVICOS PRESTADOS'}>} VALOR));

                        SET vMargemBruta = =+vContribuicaoMarginal - vCustosServicosPrestados;

                        SET vDespesasFixas = =fabs(Sum ({$ <NIVEL1_ID={8}>} VALOR));

                        SET vEbitda = =-vMargemBruta - vDespesasFixas;

                        SET vDepreciacao = =fabs(Sum ({$ <NIVEL1_ID={10}>} VALOR));

                        SET vRAJIR = =+vEbitda - vDepreciacao;

                        SET vResultadoFinanceiro = =fabs(Sum ({$ <NIVEL1_ID={12}>} VALOR));

                        SET vResultadoOperacional = =+vRAJIR - vResultadoFinanceiro;

                        SET vOutrosResultados = =fabs(Sum ({$ <NIVEL1_ID={14}>} VALOR));

                        SET vProvisao = =fabs(Sum ({$ <NIVEL1_ID={15}>} VALOR));

                        SET vDistLucros = =fabs(Sum ({$ <NIVEL1_ID={16}>} VALOR));

                        SET vInvestimentos = =fabs(Sum ({$ <NIVEL1_ID={18}>} VALOR));

                         

                        e na expressao da tabela eu coloquei:

                        IF(NIVEL1='1-RECEITA OPERACIONAL BRUTA',sum(VALOR))&

                        IF(NIVEL1='2-DEDUÇÕES DA RECEITA',sum(VALOR)) &

                        IF(NIVEL1='3-RECEITA OPERACIONAL LIQUIDA',sum(vReceitaBruta - vDeducoesReceita))&

                        IF(NIVEL1='4-CUSTO VARIÁVEIS DE VENDAS',sum(VALOR)) &

                        IF(NIVEL1='5-CONTRIBUIÇÃO MARGINAL',sum(VALOR)) &

                        IF(NIVEL1='6-CUSTOS DOS SERVIÇOS PRESTADOS',sum(VALOR))&

                        IF(NIVEL1='7-MARGEM BRUTA',sum(+vContribuicaoMarginal - vCustosServicosPrestados)*-1)&

                        IF(NIVEL1='8-DESPESAS OPERACIONAIS FIXAS',sum(VALOR))&

                        IF(NIVEL1='9-EBTIDA', sum(-vMargemBruta - vDespesasFixas))&

                        IF(NIVEL1='10-DEPRECIAÇÃO',sum(VALOR))&

                        IF(NIVEL1='11-RAJIR',sum(vEbitda - vDepreciacao)) &           

                        IF(NIVEL1='12-RESULTADO FINANCEIRO',sum(VALOR))&

                        IF(NIVEL1='13-RESULTADO OPERACIONAL',sum(vRAJIR - vResultadoFinanceiro))&

                        IF(NIVEL1='14-OUTROS RESULTADOS OPER e NÃO OPERACIONAIS',sum(VALOR))&

                        IF(NIVEL1='15-PROVISAO PARA IRPJ E CSLL',sum(VALOR))&

                        IF(NIVEL1='16-DISTRIBUIÇÃO DE LUCROS',sum(VALOR))&

                        IF(NIVEL1='17-RESULTADO LIQUIDO',vResultadoOperacional + vOutrosResultados + vDistLucros + vProvisao)&

                        IF(NIVEL1='18-INVESTIMENTOS',sum(VALOR))

                         

                        Dessa maneira consegui, fazer os calculos do DRE, mas quando utilizo algum filtro, ele elimina da tabela aqueles que possuem o calculo feito por conta.

                        completo.PNG

                        FIltro.PNG

                        Tambem não tenho o total na tabela, sera que se eu colocar Set Analisys esses dados ficam? Essa foi a unica maneira que eu consegui fazer funcionar. Fiz o calculo por script, mas como tem alguns que possui o valor 0, dai nao estava fechando. Obrigado por enquanto.