首页 > 解决方案 > 从参数中获取先前的第一个值

问题描述

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

钥匙 行号
20210131 一月 2021 3
20201231 十二月 2020 2
20201130 十一月 2020 1

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

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

标签: reporting-servicesssrs-2012

解决方案


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

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

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

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

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

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

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


推荐阅读