我想在腳本,以加載數據這樣的:
(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是空的。
有什麼想法?
我想在腳本,以加載數據這樣的:
(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是空的。
有什麼想法?
最簡單的解決方案,我認爲,將是
If(mixmatch(id,'blue','green','red') and place='A','Group A',
If(mixmatch(id,'blue','green','yellow') and place='B','Group B')) as allPl
您需要嵌套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
。
發表評論是這樣的話
您也可以使用此解決方案。
map_allPl:
mapping
load
color & '@@[email protected]@' & 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 & '@@[email protected]@' & 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
問候,
這就是我的答案...請在閱讀完所有唱片後回覆 – EldadT
否,我想ID 4,5,6是B組因爲我不能使用嵌套的循環 – pape
你可以使用'place'列作爲標識嗎?例如,只需將'place'值連接到'GROUP'字符串?就像:''GROUP'&place as appPl' –