【问题标题】:Get previous first value from parameter从参数中获取先前的第一个值
【发布时间】:2021-02-05 03:03:32
【问题描述】:

我有一个来自数据集日期的参数日期: 数据样本

Key Month Year Row num
20210131 January 2021 3
20201231 December 2020 2
20201130 November 2020 1

我需要做一个返回所选值的前一个表达式,例如当用户选择 2021 年 1 月(日期参数)时,它将在文本框中的表达式中返回 2020 年 12 月。

我尝试previous(first(fields! Month_year. Value, "group name"))但它返回错误,有什么办法可以解决它?

【问题讨论】:

  • “选择”是什么意思?此数据是否用于填充参数值?编辑您的问题以添加更多详细信息,告诉用户选择发生的位置以及将使用结果的位置(例如,结果将用于传递给查询)或者它将显示在文本框或表格等中。
  • @AlanSchofield 我更新了我的问题。

标签: reporting-services ssrs-2012


【解决方案1】:

我建议您扩展数据集查询以包含针对每一行的先前值。

假设您的数据集查询名为 DataSet1 并使用名为“myTable”的表,然后类似这样(我将示例列名称从 Key 更改为 KeyID 以避免关键字问题)。

    SELECT *
        , LAG(KeyID) OVER(ORDER BY RowNum) as PreviousMonthKeyID
        FROM myTable

注意:这假定行号始终处于正确的顺序,如果不是,那么您可以将其更改为按 KeyID 的顺序。

然后您可以使用 LOOKUP() 来查找正确的值,因此如果您的参数称为 selectedDate 并且它的值设置为 KeyID 列,请使用类似

=LOOKUP(Parameters!selectDate.Value, Fields!KeyID.Value, Fields!PreviousMonthKey.Value, "DataSet1")

这读为“获取selectdDate中的值,在名为DataSet1的数据集中的KeyID列中找到该值,并返回在名为PreviousMonthKeyID的列中找到的值”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2012-04-22
    • 1970-01-01
    • 2012-05-12
    • 2011-05-08
    • 2019-03-09
    • 2013-12-05
    相关资源
    最近更新 更多