【问题标题】:Setting 2 parameters with single dataset in SSRS在 SSRS 中使用单个数据集设置 2 个参数
【发布时间】:2018-04-11 14:07:11
【问题描述】:

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

  • 标签
  • 开始日期
  • 结束日期

例如(如果今天是 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
  • 年初至今,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 参数以在其他数据集中使用。有什么建议吗?

【问题讨论】:

  • 您要在下拉列表中显示的所有标签是什么?此外,end_date 是否总是今天的日期,而 start_date 是标签描述范围内的第一个日期(本周的第一天、当年的第一天等)?
  • @tingo 我已经更新了问题

标签: reporting-services reporting ssrs-2012


【解决方案1】:

添加一个名为say dsDropDown 的数据集并将查询设置为类似

SELECT * FROM myView

将参数myParameter 添加到您的报告中,并将可用值设置为您的dsDropDown 数据集。由于您没有密钥,因此您需要将 Value 和 Label 属性都设置为您的 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/matrix/chart 等并将其指向您的主数据集。

我认为应该是这样,但这不是我的想法,所以它可能不是 100% 正确的。但希望足以让您关注。

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

SELECT start_date from myView WHERE label = @myParameter

SELECT end_date from myView WHERE label = @myParameter

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

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

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

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

【讨论】:

  • 这可行,但不好的是我不会将 start_date 和 end_date 作为参数。因此,如果我需要将这些日期范围与不同的日期列一起使用,那么我需要多次加入此视图
  • 谢谢,但我想用单个数据集来做。检查我的答案,我是如何做到的。
【解决方案2】:

我会回答我自己的问题。 “Alan Schofield”版本有效,但我想用单个数据集来做。所以,我做了什么:

  1. 向其中包含开始日期和结束日期的数据集添加了连接列,例如:“2018-04-11 00:00:00.0000000|||2018-04-12 00:00:00.0000000”
  2. 相应地创建 2 个具有 默认值 的内部参数为 =Split(Parameters!date_selector.Value,"|||")(0)=Split(Parameters!date_selector.Value,"|||")(1)

就是这样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多