在SSRS中使用单个数据集设置2个参数

时间:2018-04-11 14:07:12

标签: reporting-services reporting ssrs-2012

我创建了一个包含3列的视图:

  • 标签
  • 起始日期
  • END_DATE

例如(如果今天是2018-04-11 10:12:54.4770000):

  • 当日,2018-04-11 00:00:00.0000000,2018-04-12 00:00:00.0000000
  • 前一天,2018-04-10 00:00:00.0000000,2018-04-11 00:00:00.0000000
  • 上周,2018-04-02 00:00:00.0000000,2018-04-09 00:00:00.0000000
  • 过去7天(滚动),2018-04-04 00:00:00.0000000,2018-04-11 10:12:54.4770000
  • 上个月,2018-03-01 00:00:00.0000000,2018-04-01 00:00:00.0000000
  • 上一季度,2018-01-01 00:00:00.0000000,2018-04-01 00:00:00.0000000
  • 去年,2017-01-01 00:00:00.0000000,2018-01-01 00:00:00.0000000
  • WTD,2018-04-08 00:00:00.0000000,2018-04-11 10:12:54.4770000
  • MTD,2018-04-01 00:00:00.0000000,2018-04-11 10:12:54.4770000
  • QTD,2018-04-01 00:00:00.0000000,2018-04-11 10:12:54.4770000
  • YTD,2018-01-01 00:00:00.0000000,2018-04-11 10:12:54.4770000
  • 过去30天(滚动),2018-03-12 00:00:00.0000000,2018-04-11 10:12:54.4770000
  • 过去90天(滚动),2018-01-11 00:00:00.0000000,2018-04-11 10:12:54.4770000
  • 过去365天(滚动),2017-04-11 00:00:00.0000000,2018-04-11 10:12:54.4770000

等等。所以我的目标是为用户下拉列表显示所显示的标签,当他选择任何标签时,我想分配@start_date和@end_date参数以用于其他数据集。有什么建议我可以做什么?

2 个答案:

答案 0 :(得分:1)

添加名为dsDropDown的数据集,并将查询设置为

SELECT * FROM myView

在报告中添加参数myParameter,并将可用值设置为dsDropDown数据集。由于您没有密钥,因此您需要将值和标签属性都设置为label字段。

接下来,添加您的主数据集并加入您的视图,按视图标签过滤,例如。

SELECT * 
    FROM myTable t
        JOIN myView v on t.SomeDate >= v.start_date AND t.SomeDate <= v.end_date
WHERE v.label = @myParameter

确保数据集查询中的参数名称与参数名称完全匹配(它们区分大小写)。

接下来只需添加Tablix /矩阵/图表等,并将其指向主数据集。

我认为应该是它,但这不是我的头脑,所以它可能不是100%正确。希望你能够遵循。

OP响应后更新: 如果您需要这些参数,则需要添加两个新数据集dsStartdsEnd。对这些数据集的查询如下:

SELECT start_date from myView WHERE label = @myParameter

SELECT end_date from myView WHERE label = @myParameter

然后添加两个新参数@start' and @ end`并将默认值设置为相应的数据集。

当您选择第一个参数时,秒数2将自动更新。确认其工作后,您可以将@start和@end参数设置为隐藏。

然后将主数据集查询更改为类似..

SELECT * 
        FROM myTable t
    WHERE t.Somedate between @start AND @end

答案 1 :(得分:0)

我会回答我自己的问题。 &#34; Alan Schofield&#34;版本有效,但我想用单个数据集来做。那么,我做了什么:

  1. 在数据集中添加了连接列,其中包含开始日期和结束日期,例如:&#34; 2018-04-11 00:00:00.0000000 ||| 2018-04-12 00:00:00.0000000&#34 ;
  2. 创建2个内部参数,其中默认值=Split(Parameters!date_selector.Value,"|||")(0)=Split(Parameters!date_selector.Value,"|||")(1)相应
  3. 那是