我需要通过串联5个字段来生成标签字段,但这是窍门:我只想添加与值匹配的字符串,而不添加空字符串。在下面的示例中,四个字段分别命名为“红色,绿色,蓝色和黄色”。值可以是“ Y”,“ N”或“ Null”。我需要从所有“ Y”值中构建标签:
Red, Green, Blue, Yellow
Y, N, Y, Null --> resultant string would be "Red, Blue"
Y, Y, Null, N --> resultant string would be "Red, Green"
N, Null, N, Y --> resultant string would be "Yellow"
我目前正在做的是一系列计算字段的级联,在其中检查两个字段,并将其放在一个临时字段中,然后根据下一列检查该临时字段并创建一个新的临时字段,等等。因此(缩写代码):
If Red is Y and Green is Y then Temp1 = "Red, Green"
Elsif Red is Y and Green <> Y then Temp1 = "Red"
elsif Green is Y and Red <> Y then Temp1 = "Green"
Else Temp1 is 'empty'
下一个计算将每个条件的Temp1与Blue进行比较,然后构建temp2,依此类推。
问题:这是最有效的方法吗?还是我缺少一些巧妙的代码?我可以在一次计算中完成所有操作,而不会出现大量的if / then组合吗?没有那么多字段会很好。
答案 0 :(得分:0)
这是基于“ Y”的存在而串联的解决方案。如果值是“ N”,Null或其他不同的值,则ELSE不会为串联添加任何内容。
//Calculated field you will create
REPLACE(TRIM( STR(IF [Red] = "Y" THEN "RED " ELSE "" END)+
STR(IF [Green] = "Y" THEN "Green " ELSE "" END)+
STR(IF [Blue] = "Y" THEN "Blue " ELSE "" END)+
STR(IF [Yellow] = "Y" THEN "Yellow" ELSE "" END)), " ", ", ")
TRIM()删除所有尾随空格,如果您的最后一个单词不是'Yellow',则可能会出现尾随空格。环绕整个语句的REPLACE()在每个单词后添加一个逗号-用空格替换逗号和空格。
希望有帮助。