为不同的日期字段添加参数切换

Adding Parameter toggle for Different date fields

我需要在 SSRS 报告中实现切换,报告的用户可以在其中 select 筛选任一日期 1) 终止日期、2) 激活日期或 3) 计费日期

我在 SSRS 中将参数创建为 @toggle,其值为 T、A、B @Date_From 是我们要开始日期范围过滤器的下面的字段 @Date_To 是下面我们要结束日期范围过滤器的字段

在我的 TSQL 查询中,我在 where 子句中添加了这个:

A​​ND ((@Toggle = 'A' AND BS.ActivatedDatePK 在 (@Date_From) 和 (@Date_To) 之间 或 (@Toggle = 'T' AND BS.TerminationDatePK BETWEEN (@Date_From) AND (@Date_To)) 或 (@Toggle = 'B' AND BS.BillingStartDatePK BETWEEN (@Date_From) AND (@Date_To)))

我没有得到任何一个参数的结果。 Visual Studio 没有抛出任何错误,所以在某些地方我的逻辑只是计划错误。

有没有人有什么想法?

这里有一些东西可以尝试...

逻辑在我看来确实不错(虽然老了累了我可能漏掉了什么!)

  1. 运行 在服务器上进行跟踪,查看实际传递给查询参数的内容。
  2. 尝试删除 where 子句中除日期部分之外的所有内容 - 这将确保日期不是问题
  3. 日期总是很麻烦,请检查数据类型是否正确并且您没有以错误的格式传递日期
  4. 测试您在 SSMS 或您使用的任何查询编辑器中使用一些手动参数值登录,并确保您获得预期的结果。
  5. 点击报告工具栏上的刷新按钮,确保您没有看到过时的(或缺少的)数据

综上所述,'might'将数据集查询编写为表达式会更容易。

因此,点击数据集编辑器中查询文本字段旁边的函数按钮,然后将其设置为类似于

的表达式
="SELECT * FROM myTable WHERE BS." & 
    SWITCH(
           Parameters!Toggle.Value = "A", "ActivatedDatePK",
           Parameters!Toggle.Value = "T", "TerminationDatePK",
           Parameters!Toggle.Value = "B", "BillingStartDatePK") &
    " BETWEEN " & Parameters!Date_From.Value " AND " & Parameters!Date_To.Value 

您可能需要将日期转换为格式正确的字符串...