Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

Help on Fixing measure issue using Switch Statement

  Hi Everyone,   I am trying to solve a measure which has to dynamically caluclate the multiple bin rating based on the switch statement. In the below given file , I have created multiple paramete...
  • PhilipTreacy's avatar
    5 years ago

    Hi Anonymous 

    All the Tier Range values are less than 0 but all your Rate values are at least 45.

     

    So your SWITCH will only ever return 5

    Multiple_Bin_measure_rate = SWITCH (
    
        TRUE, 
       
        BBC_Rate[BBC_Rate Value] = 0, 0,
        
        BBC_Rate[BBC_Rate Value] <= SELECTEDVALUE(Input[2 Tier Range]) , 1,
    
        BBC_Rate[BBC_Rate Value] > SELECTEDVALUE(Input[2 Tier Range]) &&  BBC_Rate[BBC_Rate Value] <= SELECTEDVALUE(Input[3 Tier Range]), 2,
        
        BBC_Rate[BBC_Rate Value] > SELECTEDVALUE(Input[3 Tier Range]) &&  BBC_Rate[BBC_Rate Value] <= SELECTEDVALUE(Input[4 Tier Range]), 3,
     
        BBC_Rate[BBC_Rate Value] > SELECTEDVALUE(Input[4 Tier Range]) &&  BBC_Rate[BBC_Rate Value] <= SELECTEDVALUE(Input[5 Tier Range]), 4,
        
        BBC_Rate[BBC_Rate Value] > SELECTEDVALUE(Input[5 Tier Range]), 5,
    
        CDE_Rate[CDE_Rate Value] = 0, 0,
        
        CDE_Rate[CDE_Rate Value] <= SELECTEDVALUE(Input[2 Tier Range]) , 1,
    
        CDE_Rate[CDE_Rate Value] > SELECTEDVALUE(Input[2 Tier Range]) &&  CDE_Rate[CDE_Rate Value] <= SELECTEDVALUE(Input[3 Tier Range]), 2,
        
        CDE_Rate[CDE_Rate Value] > SELECTEDVALUE(Input[3 Tier Range]) &&  CDE_Rate[CDE_Rate Value] <= SELECTEDVALUE(Input[4 Tier Range]), 3,
     
        CDE_Rate[CDE_Rate Value] > SELECTEDVALUE(Input[4 Tier Range]) &&  CDE_Rate[CDE_Rate Value] <= SELECTEDVALUE(Input[5 Tier Range]), 4,
        
        CDE_Rate[CDE_Rate Value] > SELECTEDVALUE(Input[5 Tier Range]), 5,
    
        Ram_Rate[Ram_Rate Value] = 0, 0,
        
        Ram_Rate[Ram_Rate Value] <= SELECTEDVALUE(Input[2 Tier Range]) , 1,
    
        Ram_Rate[Ram_Rate Value] > SELECTEDVALUE(Input[2 Tier Range]) &&  Ram_Rate[Ram_Rate Value] <= SELECTEDVALUE(Input[3 Tier Range]), 2,
        
        Ram_Rate[Ram_Rate Value] > SELECTEDVALUE(Input[3 Tier Range]) &&  Ram_Rate[Ram_Rate Value] <= SELECTEDVALUE(Input[4 Tier Range]), 3,
     
        Ram_Rate[Ram_Rate Value] > SELECTEDVALUE(Input[4 Tier Range]) &&  Ram_Rate[Ram_Rate Value] <= SELECTEDVALUE(Input[5 Tier Range]), 4,
        
        Ram_Rate[Ram_Rate Value] > SELECTEDVALUE(Input[5 Tier Range]), 5,
      
        0 
    
    )
        

     

    because the only condition that is True is that the rates are greater than the value in 5 Tier Range

    BBC_Rate[BBC_Rate Value] > SELECTEDVALUE(Input[5 Tier Range]), 5,

     

    Also, with SWITCH, it stops evaluating after it reaches the first True condition.  So as things are with BBC_Rate at 45 minimum, none of the lines after this

    BBC_Rate[BBC_Rate Value] > SELECTEDVALUE(Input[5 Tier Range]), 5,

    will ever get tested.  You need to redesign your SWITCH or rethink the approach to what you are trying to do.

    Regards

    Phil