1 Reply Latest reply: Apr 12, 2013 9:31 AM by Robert Svebeck RSS

    Re-use a previously used calculation in the script

    Robert Svebeck

      Often I find my self in need of a previously written calculation later in the same script. How can I reuse the calculation?

       

       

      Example:

       

      This is what I would like to be able to do, even though  I know this is not possible I think this explains it best:

       

      Load

       

      if(SOLDQTY=0 and STOCKQTY<=0,0,

        if(SOLDQTY<=0,9999,

         if(STOCKQTY/SOLDQTY>0,STOCKQTY/SOLDQTY,

          0))) as MyMeasure,

       


      if(Ordertype=1 and MyMeasure<=1,'A',

      if(Ordertype=1 and MyMeasure>1 and MyMeasure<=5,'B',

        if(Ordertype>1 and MyMeasure>1 and MyMeasure<=26,'C',

         if(MyMeasure>26 and MyMeasure<=50,'D',

          if(MyMeasure>50,'E')))))as [MyMeasure groups]

       

       

      resident myTable;

       

      So my question is, can I do something like this? Or do I have to make resident loads to acomplish this without having to copy/paste the calculation of MyMeasure into the calculation in [MyMeasure groups] 8 times!

       

      Observe that this example is not realistic, its just an example.

      Perhaps using a variable for MyMeasure is the solution?

       

      Regards

      Robert

        • Re: Re-use a previously used calculation in the script
          Robert Svebeck

          I found that This solution works (using variables):


          Set MyMeasure = '

          if(SOLDQTY=0 and STOCKQTY<=0,0,

            if(SOLDQTY<=0,9999,

             if(STOCKQTY/SOLDQTY>0,STOCKQTY/SOLDQTY,

              0))) ';

           

          Load

           

          $(MyMeasure) as MyMeasure,

           


          if(Ordertype=1 and $(MyMeasure) <=1,'A',

          if(Ordertype=1 and $(MyMeasure) >1 and $(MyMeasure) <=5,'B',

            if(Ordertype>1 and $(MyMeasure) >1 and $(MyMeasure) <=26,'C',

             if($(MyMeasure) >26 and $(MyMeasure) <=50,'D',

              if($(MyMeasure) >50,'E')))))as [MyMeasure groups]

           

           

          resident myTable;

           

           

          But I still would like to know if there are other ways, perhaps of performance reasons, faster?

           

          Robert