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”等您只需要更改值即可。
我在 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”等您只需要更改值即可。