首页 > 解决方案 > 为不同的日期字段添加参数切换

问题描述

我需要在 SSRS 报告中实现切换,报告用户可以选择在以下任一日期进行过滤:1) 终止日期、2) 激活日期或 3) 计费日期

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

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

AND ((@Toggle = 'A' AND BS.ActivatedDatePK BETWEEN (@Date_From) AND (@Date_To)) OR (@Toggle = 'T' AND BS.TerminationDatePK BETWEEN (@Date_From) AND (@Date_To)) OR (@ Toggle = 'B' AND BS.BillingStartDatePK BETWEEN (@Date_From) AND (@Date_To)))

而且我没有得到任何参数的任何结果。Visual Studio 没有抛出任何错误,所以我的逻辑只是计划错误。

有没有人有任何想法?

标签: tsqlvisual-studio-2017ssrs-2008

解决方案


这里有几件事可以尝试...

这个逻辑对我来说实际上看起来不错(虽然我老累了我可能错过了一些东西!)

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

综上所述,将数据集查询编写为表达式“可能”更容易。

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

="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 

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


推荐阅读