水晶盒到SSRS Switch声明

时间:2013-10-15 17:37:07

标签: ssrs-2008 crystal-reports-2008

如何从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: ''

1 个答案:

答案 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类型函数。