7 Replies Latest reply: Jun 17, 2014 5:44 PM by ANDRE TONINI RSS

    Valor da Expressão - Dados 2 Tabelas

    ANDRE TONINI

      Olá
             Estou precisando montar um relatório que na expressão busque dados de uma tabela e em outro momento preciso pegar de outra tabela.

      Exemplo:
      TABELA = titulofin
      (SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_LANCAMENTO,0))-
      SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'D',VL_LANCAMENTO,0)))

      TABELA = detalhefin
      (SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_NOMINAL,0))+
      SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_ACRESCIMOS,0))-
      SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_DESCONTOS,0)))

       

       

      O que precisaria fazer é o seguinte quando o TIP_DOC in (“FIN01” ,“FIN03”) trazer

      (SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_NOMINAL,0))+
      SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_ACRESCIMOS,0))-
      SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_DESCONTOS,0)))

      Quando o TIP_DOC <> “FIN01” e “FIN03” respeitar

      (SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_LANCAMENTO,0))-
      SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'D',VL_LANCAMENTO,0)))


      Caso alguem puder me dar uma dica desde já agradeço.


      abraço


      André

        • Re: Valor da Expressão - Dados 2 Tabelas
          Felipe Dutra

          Supondo que as expressões estejam corretas:

           

          IF(TIP_DOC like 'FIN01' or TIP_DOC like 'FIN03',

            (SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_NOMINAL,0))+

            SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_ACRESCIMOS,0))-

            SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_DESCONTOS,0))),

            (SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_LANCAMENTO,0))-

            SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'D',VL_LANCAMENTO,0)))

          )

           

          Abs,

          Felipe

            • Re: Valor da Expressão - Dados 2 Tabelas
              ANDRE TONINI

              Felipe, muito obrigado com sua ajuda consegui resolver o meu problema...

               

              um abraço

              André

              • Re: Valor da Expressão - Dados 2 Tabelas
                ANDRE TONINI

                Felipe,

                 

                          Acho que me precipitei, fui testar melhor e infelizmente não deu certo, mas deixa eu entender a regra que sugeriu na expressão

                *Para os lançamentos que o TIP_DOC for igual 'FIN01' e 'FIN03' a expressão fará o cálculo com base:

                IF(TIP_DOC like 'FIN01' or TIP_DOC like 'FIN03',

                  (SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_NOMINAL,0))+

                  SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_ACRESCIMOS,0))-

                  SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_DESCONTOS,0))),

                 

                *Para os lançamentos que o TIP_DOC for DIFERENTE de 'FIN01' e 'FIN03' a expressão fará o cálculo com base:

                  (SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_LANCAMENTO,0))-

                  SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'D',VL_LANCAMENTO,0)))

                )

                 

                É isso?

                 

                Um abraço

                André

                  • Re: Valor da Expressão - Dados 2 Tabelas
                    Felipe Dutra

                    André,

                     

                    Como bem foi dito pelo colega cleveranjos, é melhor usar Análise de Conjunto.

                    Teste se o código abaixo atende a sua necessidade:

                     

                    RangeSum(

                    /* TIP_DOC = FIN01 ou FIN03, ANO_VENC = 2014, MES_VENC = mai e TIPO_EMISS = C */

                         SUM(

                              {<TIP_DOC = {FIN01, FIN03}, ANO_VENC = {'2014'}, MES_VENC = {'mai'}, TIPO_EMISS = {'C'}>}

                              RangeSum(VL_NOMINAL, VL_ACRESCIMOS, -VL_DESCONTOS)

                         ),

                    /* TIP_DOC <> FIN01 e FIN03, ANO_VENC = 2014, MES_VENC = mai e TIPO_EMISS = C */

                         SUM(

                              {<TIP_DOC -= {FIN01, FIN03}, ANO_VENC = {'2014'}, MES_VENC = {'mai'}, TIPO_EMISS = {'C'}>}

                              VL_LANCAMENTO

                         ),

                    /* TIP_DOC <> FIN01 e FIN03, ANO_VENC = 2014, MES_VENC = mai e TIPO_EMISS = D */

                         -SUM(

                              {<TIP_DOC -= {FIN01, FIN03}, ANO_VENC = {'2014'}, MES_VENC = {'mai'}, TIPO_EMISS = {'D'}>}

                              VL_LANCAMENTO

                         )

                    )


                    Abs,

                    Felipe

                • Re: Valor da Expressão - Dados 2 Tabelas
                  Clever Anjos

                  Andre,

                  Prefira usar Set Analysis ao invés de IF em suas expressões, fica mais rápido

                  SUM(IF(ANO_VENC = '2014' AND MES_VENC = 'mai' AND TIPO_EMISS = 'C',VL_NOMINAL,0)


                  tornaria-se

                  SUM({<ANO_VENC = {'2014'},MES_VENC = {'mai'},TIPO_EMISS = {'C'}>}VL_NOMINAL)