4 Replies Latest reply: Mar 5, 2018 8:55 AM by Rodrigo Dittrich RSS

    Igualar dois campos em uma fórmula

    Rodrigo Dittrich

      Bom dia pessoal,

       

      Estou com uma pequena dificuldade em algo simples:

       

      Tenho a seguinte fórmula que funciona bem:

      COUNT(DISTINCT IF(DT_EMISSAO<='31/01/2018'

         AND ST_RECEITA='S' AND NTV_PSI_CODIGO='FF' AND NTV_TIPOVENDA='S'

           AND $(v1FiliaisMeta)

             AND ('31/01/2018'-DT_EMISSAO) <= 365

              AND MUN_CODIGO = REP_MUN_CODIGO

             , MUN_CODIGO))

       

      Porém preciso fazer essa forma usando o método set analysis.

      COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"},

           ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

            FIL_CODIGO={$(=vFiliaisMeta)},

              DT_EMISSAO={"<=$(=date(MAX(DT_EMISSAO)-365))"},

                MUN_CODIGO={"=$(=REP_MUN_CODIGO)"}

                 >} MUN_CODIGO)

       

      Mas na segunda fórmula não consigo adaptar a linha que está marcada em vermelho.

       

      Alguém poderia me esclarecer como uso um campo igualando outro no set analysis?

        • Re: Igualar dois campos em uma fórmula
          Thiago Justen Teixeira

          Vejamos se isso resolve:

           

          COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"},

               ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

                FIL_CODIGO={"$(=vFiliaisMeta)"},

                  DT_EMISSAO={"<=$(=ADDYEARS(MAX(DT_EMISSAO),-1))"},

                    MUN_CODIGO={"$(=If(MUN_CODIGO=REP_MUN_CODIGO,MUN_CODIGO)"}

                     >} MUN_CODIGO)

           

          Crendo que possa dar erro (via set analysis não sei se conseguiria o que queres), poderia tentar assim:

          IF(MUN_CODIGO=REP_MUN_CODIGO,

          COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"},

               ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

                FIL_CODIGO={"$(=vFiliaisMeta)"},

                  DT_EMISSAO={"<=$(=ADDYEARS(MAX(DT_EMISSAO),-1))"}>} MUN_CODIGO))

           

          Abs e Sucesso!

          • Re: Igualar dois campos em uma fórmula
            Thiago Justen Teixeira

            Rodrigo, mais uma tentativa:

             

            COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"},

                 ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

                  FIL_CODIGO={$(=vFiliaisMeta)},

                    DT_EMISSAO={"<=$(=ADDYEARS(MAX(DT_EMISSAO),-1))"}>} If(MUN_CODIGO=REP_MUN_CODIGO, MUN_CODIGO))

              • Re: Igualar dois campos em uma fórmula
                Rodrigo Dittrich

                Bom dia Thiago,

                 

                Show de bola, deu certo essa última fórmula ficando assim:

                COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={">=$(=AddYears(MAX(vPeriodo),-1)) <=$(=date(Max(vPeriodo)))"},

                     ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

                      FIL_CODIGO={$(=vFiliaisMeta)}

                        >} If(MUN_CODIGO=REP_MUN_CODIGO, MUN_CODIGO))

                 

                Obs: Porém na minha fórmula anterior tinha um erro de lógica:

                Eu estava matando alguns filtros onde eu fazia:

                DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"}, e logo após

                DT_EMISSAO={"<=$(=ADDYEARS(MAX(DT_EMISSAO),-1))"}>}

                Corrigi essa parte e com sua última resposta deu certo.