如何从SSRS中的Crystal Reports重新编写以下公式
select {spAR6100b_allcompanies;1.artyp}
case 'BCS','CIG','HUM','INA','INS','MNG','PHC','SEC','SPC','TRI','UHC','WMD' : 'Primary'
case 'COI','ICO','INP','MCO','COI' : 'Secondary'
default: ''
答案 0 :(得分:1)
SSRS表达式通常不能很好地用于IN
比较。
有几个选择。
使用Switch
和一组链接的Or
语句:
=Switch(Fields!arTyp.Value = "BCS" or Fields!arTyp.Value = "BCS" or Fields!arTyp.Value = "HUM", "Primary"
, Fields!arTyp.Value = "COI" or Fields!arTyp.Value = "ICO", "Secondary"
, True, "")
我只包含了一些你的案例,你可以看到它已经很久了 - 你需要根据需要添加任意数量的值。
使用字符串匹配,您可以通过检查字段值是否在匹配值字符串中来简化此操作:
=Switch(InStr(",BCS,CIG,HUM,", "," & Fields!arTyp.Value & ",") > 0, "Primary"
, InStr(",COI,ICO,INP,", "," & Fields!arTyp.Value & ",") > 0, "Secondary"
, True, "")
我们用逗号包装所有内容以防止部分匹配时出现误报。再次,将所有必需的值添加到匹配值的字符串列表中。
最后,您可以使用自定义代码进行此比较,并将比较移至报表中嵌入的VB.NET类型函数。