Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Qlikview-脚本中的多个if_Loops_Qlikview - Fatal编程技术网

Loops Qlikview-脚本中的多个if

Loops Qlikview-脚本中的多个if,loops,qlikview,Loops,Qlikview,我有一张桌子: 我想在脚本中加载以下数据: (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 但是当create list my allPl为空时 有什么想法吗?您需要嵌套if语

我有一张桌子:

我想在脚本中加载以下数据:

 (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
但是当create list my allPl为空时


有什么想法吗?

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

if( condition1 = true, result1,
  if(condition2 = true <at this point condition1 = false>, result2 ...
上面的脚本将产生以下结果:

但我不确定这是否是你想要的结果。如上图所示,只有
黄色
值将使用此方法分配
B组


请留下一条评论,就是这种情况,我认为最简单的解决办法是

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

您也可以使用此解决方案

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
];
您可以尝试使用match()或wildmatch()或mixmatch()来减少表达式

试试看

如果(匹配(颜色、‘蓝色’、‘绿色’、‘红色’)并放置‘A’、‘A组’, 如果(匹配(颜色、‘黄色’、‘红色’、‘蓝色’)和放置‘B’、‘B组’) )作为appPl


关于,

否,我希望id 4、5、6为B组,因为我不能使用嵌套if循环,您可以使用
place
列作为标识吗?例如,是否将
place
值与
GROUP
字符串连接起来?类似于:
'GROUP'&placeasapppl
这正是我的答案……请在阅读完所有问答后回复
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
];