SSRS如果列表中的字段值

时间:2016-08-09 15:31:28

标签: sql sorting reporting-services formatting

我查看了很多教程并提出了问题,并且找不到解决问题的方法。

假设我的数据集有两列:sort_orderfield_valuesort_order是整数,field_value是数字(10,2)。

我想将某些行格式化为#,#0,将其他行格式化为#,#0.00

通常我会做

iif( fields!sort_order.value = 1 or fields!sort_order.value = 23 or .....

不幸的是,名单相当长。

我想做相当于if fields!sort_order.value in (1,2,21,63,78,...) then...)

的事情

正如另一篇文章所推荐的,我尝试了以下内容(如果在列表中排序,则只输出0,否则为1.这只是为了测试IN运算符的功能):

=iif( fields!sort_order.Value IN split("1,2,3,4,5,6,8,10,11,15,16,17,18,19,20,21,26,30,31,33,34,36,37,38,41,42,44,45,46,49,50,52,53,54,57,58,59,62,63,64,67,68,70,71,75,76,77,80,81,82,92,98,99,113,115,116,120,122,123,127,130,134,136,137,143,144,146,147,148,149,154,155,156,157,162,163,164,165,170,171,172,173,183,184,185,186,192,193,194,195,201,202,203,204,210,211,212,213,263",","),0,1)

但是,它看起来不像SSRS表达式编辑器想要接受“IN”运算符。这很奇怪,因为我发现解决这个问题的所有例子都使用IN运算符。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

尝试使用IndexOf功能:

=IIF(Array.IndexOf(split("1,2,3,4,...",","),fields!sort_order.Value)>-1,0,1)

注意所有值必须在引号内。

  

考虑@Jakub的推荐,我推荐这个解决方案   您正在通过SP提交报告,但您无法触摸它。

如果有帮助,请告诉我。