SSRS中的列根据SSRS中的参数值显示值

Column in SSRS to show value according to the parameter value in SSRS

我在 SSRS 报告中有一列应该根据参数显示值,如果参数选择百万欧元那么它应该显示百万欧元的值,这意味着该值应该除以 10^6 ,如果参数选择为 K Euro,则该值应为 K Euros,这意味着该值应除以 10^3。 我试图创建一个数据集,我在其中编写了 SQL 查询并制作了一个参数,但它没有用。 任何人都可以提供解决方案,例如我的数据集查询应该是什么以及我应该如何将其与参数映射。 我用了

if @CurrencyConv='MEuro' BEGIN 
select 1/Power(10,6) as ProductValue
end
else BEGIN select 1/Power(10,3) as ProductValue
END

并制作了一个参数,我将可用值硬编码为 'MEuro' 和 'KEuro' 在该列的表达式中,我将列值与 Dataset Value(ProductValue) 相乘 列名是 Converted Booking,我必须根据参数值乘以该列,所以如果值是 MEuro 那么它应该是 [Converted Booking]*1/Power(10,6) 在 Sql 中,以下查询正在运行

select [Converted Booking]*1/Power(10,6) from T_GCP_REP

如何在 SSRS 中应用同样的东西

如果您想要 SQL 中的字段,您可以使用 CASE 语句添加它。

SELECT *, 1/Power(10, CASE WHEN @CurrencyConv = 'MEuro' THEN 6 ELSE 3 END) as ProductValue
FROM TABLE

或者您可以在 SQL 中使用新的 IIF,就像 SSRS

SELECT *, 1/Power(10, IIF(@CurrencyConv = 'MEuro', 6, 3)) as ProductValue
FROM TABLE

对于 SSRS 表达式,也可以使用 IIF 语句:

=1/Power(10, IIF(Parameters!CurrencyConv.Value = 'MEuro', 6, 3))

虽然最好使用 MEuro 作为参数标签并将 6 作为值(对于 KEuro,3 作为其他可能的值)。那么你可以将它缩短为:

=1/Power(10, Parameters!CurrencyConv.Value)

如果您想要数据集中的最终计算值,请将您的数据集查询更改为

SELECT 
    *,
    CAST([Converted Booking] as float) / CASE WHEN @CurrencyConv = 'MEuro' THEN 1000000 ELSE 1000 END as ConvertedBookingFinal
    from T_GCP_REP

如果您想纯粹在 SSRS 中执行此操作(也许您无法更改数据集查询?) 将参数 values 分别设置为 1000 和 1000000。

然后在报告文本框中将表达式设置为

= Fields.Converted_Booking.Value / Parameters!myParameterName.Value

您可以将参数标签保留为“MEuro”等您只需要更改值即可。