【问题标题】:Column in SSRS to show value according to the parameter value in SSRSSSRS 中的列根据 SSRS 中的参数值显示值
【发布时间】:2021-07-13 14:58:04
【问题描述】:

我在 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 中应用相同的东西

【问题讨论】:

  • 你当时的尝试是什么?使用edit 功能在问题中向我们展示。听起来你只需要一个 CASE 表达式。
  • @Larnu 我已经编辑了问题。
  • 由于所有值都是int,因此将始终返回0。
  • okk 那我该怎么办??
  • 这能回答你的问题吗? SQL Server, division returns zero

标签: sql-server reporting-services


【解决方案1】:

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

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

或

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    或者您可以像 SSRS 一样在 SQL 中使用新的 IIF

    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)
    

    【讨论】:

    • 是的,在 Sql 中它正在工作。但是如何在 SSRS 中应用同样的东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多