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

Tsql 为不同的日期字段添加参数切换,tsql,visual-studio-2017,ssrs-2008,Tsql,Visual Studio 2017,Ssrs 2008,我需要在SSRS报告中实现切换,报告的用户可以选择过滤日期1)终止日期、2)激活日期或3)计费日期 我在SSRS中创建了参数@toggle,其值为T、A、B @Date_From是下面要启动日期范围筛选器的字段 @Date_To是下面要结束日期范围筛选器的字段 在我的TSQL查询中,我在where子句中添加了以下内容: 和(@Toggle='A'和BS.ActivatedDatePK介于(@Date\u From)和(@Date\u To))之间) 或(@Toggle='T'和BS.Termin

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

我在SSRS中创建了参数@toggle,其值为T、A、B @Date_From是下面要启动日期范围筛选器的字段 @Date_To是下面要结束日期范围筛选器的字段

在我的TSQL查询中,我在where子句中添加了以下内容:

和(@Toggle='A'和BS.ActivatedDatePK介于(@Date\u From)和(@Date\u To))之间) 或(@Toggle='T'和BS.TerminationDatePK介于(@Date\u-From)和(@Date\u-To))之间) 或者(@Toggle='B'和BS.BillingStartDatePK介于(@Date\u-From)和(@Date\u-To))之间)

对于这两个参数,我都没有得到任何结果。VisualStudio没有抛出任何错误,所以我的逻辑只是计划错误


有人有什么想法吗?

这里有一些东西可以尝试

在我看来,这种逻辑其实还不错(尽管年纪大了,很累了,我可能错过了一些东西!)

  • 在服务器上运行跟踪,查看实际传递到查询参数的内容
  • 尝试删除where子句中除日期部分之外的所有内容-这将确保日期不是问题所在
  • 日期总是一个难题,请检查数据类型是否正确,以及是否以错误的格式传递日期
  • 测试您是否登录到SSMS或使用一些手动参数值的任何查询编辑器中,并确保获得预期的结果
  • 点击“报告”工具栏上的“刷新”按钮,确保没有看到过时的数据(或缺少数据)
  • 综上所述,将数据集查询编写为表达式“可能”更容易

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

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

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

    如果您没有得到任何结果,我会检查我的表,以确保我的数据实际上在您用于搜索的参数范围内。@jmabe谢谢您的建议,我可以确认我确实有介于参数之间的日期。因此,我认为问题在于我在SSRS中的切换参数没有在where clauseAlan中选择正确的字段!谢谢你的时间,我实际上已经解决了这个问题,你是对的,逻辑很好。我不得不对数据做一些调整,使其适合。