tsql - 为不同的日期字段添加参数切换
问题描述
我需要在 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 没有抛出任何错误,所以我的逻辑只是计划错误。
有没有人有任何想法?
解决方案
这里有几件事可以尝试...
这个逻辑对我来说实际上看起来不错(虽然我老累了我可能错过了一些东西!)
- 在服务器上运行跟踪并查看实际传递给查询参数的内容。
- 尝试删除除 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
您可能需要将日期转换为格式正确的字符串...
推荐阅读
- python - 为什么pycharm会通过断点
- c# - 抛出异常:Microsoft.VisualStudio.TestPlatform.Common.dll 和 System.Private.CoreLib.dll 中的“System.IO.FileLoadException”
- scala - 为什么 spark varargs 函数 countDistinct 首先接收单个字符串/列?
- java - UIMA 安装:线程“主”java.lang.classcastexception 中的异常
- javascript - 用“.”表示 app.get 静态文件 在文件名中
- api - 使用社交媒体 API 进行分析时,我可以获得哪些信息?
- c++ - 带有串行端口错误的 Mbed 以太网 Nucleo F746ZG
- javascript - 用 mousedown 创建一个正方形
- android - 更改数据时 RecyclerView.ListAdapter 崩溃
- javascript - ReactJS 尝试从动态呈现的按钮调用类方法