具有动态数据类型的 SSRS 报表字段

SSRS Report Field with a Dynamic Data Type

我正在将多个手动报告合并为一个 SSRS,方法是更改​​ select 语句以遵循以下格式:

 select
 'DepartmentName'
 ,'StatName'
 ,'DataType' --(Int, percentage,date,time, etc)
 ,'Stat'
 from TablesNeeded

现在这个联合很好,所以我最终得到了一个统计名称及其值的列表。在此之后,我想让显示 "Stat" 的单元格根据 "DataType"

的结果更改其格式

我试图使用 IIF 来确定格式,它使用单个 IIF 语句来表现,但是在嵌套以适应不同的数据类型之后,它似乎 "false" 每个 IIF 结果和 return 只是default/value:

工作

 =iif(
 Fields!DataType.Value="Percentage"
 ,Format(Fields!Stat.Value,"0%")
 ,Fields!Stat.Value
 )

"Falsing"

 =iif(
 Fields!DataType.Value="Percentage"
 ,Format(Fields!Stat.Value,"0%")
 ,iif(
 Fields!DataType.Value="Date"
 ,Format(Fields!Stat.Value,"y")
 ,iif(
 Fields!DataType.Value="int"
 ,Fields!Stat.Value
 ,Fields!Stat.Value
 )))

并类似地使用 switch "Falsed"

 =Switch(
 Fields!DataType.Value="Percentage",Format(Fields!Stat.Value,"0%")
 ,Fields!DataType.Value="int",Format(Fields!Stat.Value,"#,#0")
 ,Fields!DataType.Value="Date",Format(Fields!Stat.Value,"y")
 )

我问过一位同事,我们都被难住了。对正确的表达格式有什么想法吗?

假设您所有的数据类型都是正确的,那么您只需要在单元格的 Format 属性 中使用 switch 语句的简化版本即可。

有点像..

 =SWITCH(
 Fields!DataType.Value="Percentage","0%"
 ,Fields!DataType.Value="int","#,#0"
 ,Fields!DataType.Value="Date","y")
 )

注意您可以只使用 "p0" 作为百分比类型,"n0" 作为整数。