【问题标题】:Qlikview - multiple if in scriptQlikview - 多个 if 在脚本中
【发布时间】:2016-07-01 10:15:41
【问题描述】:

我有桌子:

我想在脚本中加载数据:

 (if((color = 'blue' or color = 'green' or color = 'red') and place = 'A','GROUP A') or 
 if((color = 'yellow' or color = 'red' or color = 'blue') and place = 'B','GROUP B')) as allPl

但是当创建列表时我的 allPl 是空的。

有什么想法吗?

【问题讨论】:

    标签: loops qlikview


    【解决方案1】:

    我认为最简单的解决方案是

    If(mixmatch(id,'blue','green','red') and place='A','Group A',
       If(mixmatch(id,'blue','green','yellow') and place='B','Group B')) as allPl
    

    【讨论】:

      【解决方案2】:

      您需要嵌套if 语句才能获得结果。

      if( condition1 = true, result1,
        if(condition2 = true <at this point condition1 = false>, result2 ...
      

      对于您的情况:

       if(    color = 'blue' 
           or color = 'green' 
           or color = 'red','GROUP A',  
         if(   color = 'yellow' 
            or color = 'red' 
            or color = 'blue','GROUP B')
        ) as allPl    
      

      上面的脚本会产生如下结果:

      但我不确定这是否是您想要的结果。正如您从上图中看到的,只有yellow 值将使用这种方法分配GROUP B

      评论是这样的

      【讨论】:

      • 不,我希望 id 4、5、6 成为 GROUP B,因为我不能使用嵌套 if 循环
      • 您可以使用place 列作为标识吗?例如,只需将place 值与GROUP 字符串连接?比如:'GROUP ' &amp; place as appPl
      【解决方案3】:

      您也可以使用此解决方案。

      map_allPl:
      mapping
      load
          color & '@@separator@@' &  place    AS IN
          ,allPl                              AS  OUT
      inline
      [color,place,allPl
      blue,A,GROUP A
      green,A,GROUP A
      red,A,GROUP A
      yellow,B,GROUP B
      red,B,GROUP B
      blue,B,GROUP B];
      
      table:
      load
          *
          ,applyMap('map_allPl',color & '@@separator@@' &  place,'nd')    AS  allPl
      inline
      [id,color,place
      1,blue,A
      2,green,A
      3,red,A
      4,yellow,B
      5,red,B
      6,blue,B
      ];
      

      【讨论】:

        【解决方案4】:

        你可以尝试使用 match() 或 wildmatch() 或 mixmatch() 来减少你的表达。

        试试看,

        if(match(color,'blue','green','red') and place='A','Group A', if(match(color,'yellow','red','blue') and place='B','Group B') ) 作为 appPl

        问候,

        【讨论】:

        • 这正是我的回答...请在阅读完所有回答后回复
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-20
        • 2018-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多